Interface LoadMBean


  • public interface LoadMBean
    One LoadMBean instance exists in the system, to provide information related to the Server load. It is created at startup by Lightstreamer Server and lasts until the shutdown of the Server.

    LoadMBean name:
    "com.lightstreamer:type=Load"
    • Method Detail

      • getTotalJVMThreads

        java.lang.Integer getTotalJVMThreads()
        Returns:
        The total number of threads in the Java virtual machine.
      • getTotalPooledThreads

        java.lang.Integer getTotalPooledThreads()
        Returns:
        The global number of threads belonging to one of the thread pools used by Lightstreamer Server to manage the various processing stages. This value is the sum of getActivePooledThreads and getWaitingPooledThreads, but for possible further threads currently in a transition phase.
      • getActivePooledThreads

        java.lang.Integer getActivePooledThreads()
        Returns:
        The total number of threads belonging to one of the thread pools used by Lightstreamer Server which are currently executing a task.
      • getWaitingPooledThreads

        java.lang.Integer getWaitingPooledThreads()
        Returns:
        The total number of threads belonging to one of the thread pools used by Lightstreamer Server which are currently unused and waiting for a new task to be enqueued.
      • getQueueStageSnapshot

        java.lang.Integer getQueueStageSnapshot()
        Returns:
        The length of the queue of the tasks waiting to be processed by the "SNAPSHOT" thread pool. This pool manages the dispatching of snapshot related events to the sessions which issued a snapshot request.
      • getQueueStageEvents

        java.lang.Integer getQueueStageEvents()
        Returns:
        The length of the queue of the tasks waiting to be processed by the "EVENTS" thread pool. This pool manages the dispatching of each new update event to all sessions in which the involved item was subscribed to.
      • getQueueStagePump

        java.lang.Integer getQueueStagePump()
        Returns:
        The length of the queue of the tasks waiting to be processed by the "PUMP" thread pool. This pool manages the collection of all available updates for a session into a packet to be sent to the client.
      • getQueueStageHTTPAccept

        java.lang.Integer getQueueStageHTTPAccept()
        Returns:
        The length of the queue of the tasks waiting to be processed by the "ACCEPT" and "SERVER" thread pools or any of the optional thread pools that can be defined to override the latter for specific subsets of tasks. These pools manage reading and processing incoming client requests (this includes all kinds of client requests).
      • getQueueStageHandshake

        java.lang.Integer getQueueStageHandshake()
        Returns:
        The length of the queue of the tasks waiting to be processed by the "TLS-SSL HANDSHAKE" and "TLS-SSL AUTHENTICATION" thread pools. These pools manage the operations needed to accomplish all TLS/SSL handshakes, on connections to ports listening in https.
      • getQueueStageMPNExecutor

        java.lang.Integer getQueueStageMPNExecutor()
        Returns:
        The length of the queue of the tasks waiting to be processed by the "MPN EXECUTOR" and "MPN TAKEOVER AND ADOPTION" thread pools. These pools manages the external database that maintains the state of the Push Notification service.
        Unavailability Note:
        MPN is currently not available.
      • getQueueStageMPNNotifier

        java.lang.Integer getQueueStageMPNNotifier()
        Returns:
        The length of the queue of the tasks waiting to be processed by the various "MPN XXX YYYYYYYYY" thread pools, where XXX represents any supported external Push Notifications service. These pools manage the submission of the Push Notifications to the external services.
        Unavailability Note:
        MPN is currently not available.
      • getTotalPoolQueue

        java.lang.Integer getTotalPoolQueue()
        Returns:
        The total number of queued tasks, waiting to be processed by any of the thread pools used by Lightstreamer Server.
      • getAveragePoolQueueWait

        java.lang.Integer getAveragePoolQueueWait()
        Returns:
        The average waiting time in milliseconds experienced by the tasks whose processing by any of the thread pools used by Lightstreamer Server started in the last sampling period. A large or constantly increasing value may signal that some thread pool has all the available threads blocked.
      • getThreadPools

        java.util.List<java.lang.String> getThreadPools()
        Returns:
        A list with the internal names of all the thread pools currently used by the Server. The internal names are consistent with the pool names as expressed in the various configuration instructions. The names can be used as input to the various getPool* operations.
      • getCurrentNIOWriteQueue

        java.lang.Integer getCurrentNIOWriteQueue()
        Returns:
        The number of socket write operations currently waiting to be selected by the NIO selector. A steadily nonzero value may signal that some clients are not dequeueing the updates properly, unless the average wait times are very small.
      • getCurrentNIOWriteQueueWait

        java.lang.Long getCurrentNIOWriteQueueWait()
        Returns:
        The waiting time in milliseconds averaged over all the socket write operations currently waiting to be selected by the NIO selector. A large or constantly increasing value may signal that some clients are not dequeueing the updates properly.
      • getActiveNIOWriteSelectors

        java.lang.Integer getActiveNIOWriteSelectors()
        Returns:
        The number of NIO selectors currently used to handle socket write operations. The minimum number is determined by the Server. Temporary selectors can be added if a maximum number of tasks per selector is configured. In this case, it is also possible that the overall count of threads associated to different write-related selectors is higher than the count of the currently active ones.
      • getTotalNIOSelectors

        java.lang.Integer getTotalNIOSelectors()
        Returns:
        The number of NIO selectors currently used to handle all possible socket operations. The minimum number for each operation type is determined by the Server. Temporary selectors can be added if a maximum number of tasks per selector is configured.
      • getExtraSleepMillis

        java.lang.Integer getExtraSleepMillis()
        Returns:
        The average extra-time experienced for sleep() system calls. It is expected that the difference between the expected time and the observed time increases when the available CPU decreases, though significant delays with plenty of CPU available have sometimes been observed.
      • getExtraWaitMillis

        java.lang.Integer getExtraWaitMillis()
        Returns:
        The average time experienced between a notify() system call and the exit from the related wait() in a producer/consumer interaction. It is expected that this time difference increases when the available CPU decreases, though significant time differences with plenty of CPU available have sometimes been observed.
      • getDelayMillis

        java.lang.Integer getDelayMillis()
        Returns:
        A very heuristic indicator of how thread context switches are slow, due to high load. It is based on an exponentially weighted moving average of the most recent internal delays observed. The same samples used for getExtraSleepMillis and getExtraWaitMillis are used.
      • enableThreadInspection

        void enableThreadInspection()
        Tries to set the JVM flags which enable the JVM's computation of usage statistics on the threads. This is necessary to enable the collection of these statistics on the thread pools (see ThreadPoolMBean.getAvgBlocksCount(), ThreadPoolMBean.getAvgBlockedTime(), and ThreadPoolMBean.getAvgCPUTime()).
        Note that these are global JVM flags, that are used and managed by the JVM's ThreadMXBean (namely, via "setThreadContentionMonitoringEnabled" and "setThreadCpuTimeEnabled"), hence changing them also affects the overall JVM behavior and the ThreadMXBean in particular; likewise, changing them via the ThreadMXBean is equivalent to doing that here.
        Also note that the specific JVM may not support the computation of these statistics, hence the statistics on the thread pools may remain disabled.
      • disableThreadInspection

        void disableThreadInspection()
        Resets the JVM flags which enable the JVM's computation of usage statistics on the threads. See enableThreadInspection().
        Note that, by the JVM default, these flags are initially disabled.