Memory Monitoring

Eclipse Amlen tracks the memory that is in use. Different workloads use memory in different ways. You can view how much memory is being used in different categories by using the Eclipse Amlen memory monitoring tools.

Eclipse Amlen uses the following categories to track the memory usage:

  • Total Memory
    This category shows the total amount of physical memory on Eclipse Amlen.
  • Free Memory
    This category shows the amount of physical memory that is available.
  • Percentage Free Memory
    This category shows the amount of free memory as a percentage of total physical memory.
  • Virtual Memory
    This category shows the amount of virtual memory that is being used by Eclipse Amlen.
  • Resident Set
    This category shows the amount of physical memory that is being used by Eclipse Amlen.
  • Message Payloads
    This category shows the amount of memory that is being used by Eclipse Amlen for message payloads. That is, it shows the amount of memory that is used to store messages on Eclipse Amlen.
    Messages are stored on Eclipse Amlen in the following situations:
    • When a message is published to multiple subscribers, a single copy of the message is stored in memory.
    • When a message is sent as a retained message, a single copy of the retained message is stored in memory. If the message is both a retained message and is published to multiple subscribers, only a single copy of the message is stored on the server.
    Therefore, a large amount of message payload memory can be used when there are many messages stored on the server for disconnected or slow consumers. A large amount of message payload memory can also be used when there are many retained messages.
  • Publish Subscribe
    This category shows the amount of memory that is being used by Eclipse Amlen for publish/subscribe messaging.
    The server allocates memory in this category in the following situations:
    • To track retained messages and subscriptions.
    • To cache publish/subscribe information for performance reasons.
    Therefore, a large amount of publish/subscribe memory can be used when there are many subscriptions, or when there are many retained messages.
  • Destinations
    This category shows the amount of memory that is being used by Eclipse Amlen for destinations. That is, for queues and topics.
    The memory that is allocated in this category is used to organize messages into the queues and subscriptions that are used by clients.
    Therefore, a large amount of destinations memory can be used when there are many messages on the server, or when there are many subscriptions.
  • Current® Activity
    This category shows the amount of memory that is being used by Eclipse Amlen for current activity.
    Memory that is allocated in this category includes sessions, transactions, message acknowledgments, and monitoring request information.
    Therefore, a large amount of current activity memory can be used when there are large numbers of connected clients, or large numbers of unacknowledged messages. Large amounts of current activity memory can also be used by workloads that make extensive use of features such as transactions.
  • Client State
    This category shows the amount of memory that is being used by Eclipse Amlen for connected and disconnected clients.
    The server allocates memory in this category for each client that is connected to the server. For MQTT clients that use cleanSession=0, the memory allocation continues after the client disconnects. The server also allocates memory in this category to track message acknowledgments for MQTT.
    Therefore, a large amount of client state memory can be used when there are many connected clients. A large amount of client state memory can also be used when many disconnected MQTT clients use cleanSession=0. This memory usage can be higher when high quality of service messages are used.

Memory is also allocated to organize the memory information. For example, the client state information is organized in a table to ensure efficient searching. The memory for the table is stored in the client state category.

For efficiency, memory allocation occurs in chunks from which smaller allocations are then made. Therefore, the allocation of a small amount of memory can result in a larger than expected increase in the corresponding memory statistic. A subsequent allocation might fit into the same chunk, in which case there would be no increase in the corresponding memory statistic.