Class LowResourceMonitor

All Implemented Interfaces:
Container, Destroyable, Dumpable, Dumpable.DumpableContainer, LifeCycle

@ManagedObject("Monitor for low resource conditions and activate a low resource mode if detected") public class LowResourceMonitor extends ContainerLifeCycle
A monitor for low resources, low resources can be detected by:
  • Field Details

    • LOG

      private static final Logger LOG
    • _server

      protected final Server _server
    • _scheduler

      private Scheduler _scheduler
    • _monitoredConnectors

      private Connector[] _monitoredConnectors
    • _acceptingConnectors

      private Set<AbstractConnector> _acceptingConnectors
    • _period

      private int _period
    • _lowResourcesIdleTimeout

      private int _lowResourcesIdleTimeout
    • _maxLowResourcesTime

      private int _maxLowResourcesTime
    • _low

      private final AtomicBoolean _low
    • _reasons

      private String _reasons
    • _lowStarted

      private long _lowStarted
    • _acceptingInLowResources

      private boolean _acceptingInLowResources
    • _lowResourceChecks

      private Set<LowResourceMonitor.LowResourceCheck> _lowResourceChecks
    • _monitor

      private final Runnable _monitor
  • Constructor Details

    • LowResourceMonitor

      public LowResourceMonitor(@Name("server") Server server)
  • Method Details

    • getMonitorThreads

      @ManagedAttribute("True if low available threads status is monitored") public boolean getMonitorThreads()
    • setMonitorThreads

      public void setMonitorThreads(boolean monitorThreads)
      Parameters:
      monitorThreads - If true, check connectors executors to see if they are ThreadPool instances that are low on threads.
    • getMaxConnections

      @ManagedAttribute("The maximum connections allowed for the monitored connectors before low resource handling is activated") @Deprecated public int getMaxConnections()
      Deprecated.
      Replaced by ConnectionLimit
      Returns:
      The maximum connections allowed for the monitored connectors before low resource handling is activated
    • setMaxConnections

      @Deprecated public void setMaxConnections(int maxConnections)
      Deprecated.
      Replaced by ConnectionLimit
      Parameters:
      maxConnections - The maximum connections before low resources state is triggered
    • getReasons

      @ManagedAttribute("The reasons the monitored connectors are low on resources") public String getReasons()
    • setReasons

      protected void setReasons(String reasons)
    • isLowOnResources

      @ManagedAttribute("Are the monitored connectors low on resources?") public boolean isLowOnResources()
    • enableLowOnResources

      protected boolean enableLowOnResources(boolean expectedValue, boolean newValue)
    • getLowResourcesReasons

      @ManagedAttribute("The reason(s) the monitored connectors are low on resources") public String getLowResourcesReasons()
    • setLowResourcesReasons

      protected void setLowResourcesReasons(String reasons)
    • getLowResourcesStarted

      @ManagedAttribute("Get the timestamp in ms since epoch that low resources state started") public long getLowResourcesStarted()
    • setLowResourcesStarted

      public void setLowResourcesStarted(long lowStarted)
    • getMonitoredConnectors

      @ManagedAttribute("The monitored connectors. If null then all server connectors are monitored") public Collection<Connector> getMonitoredConnectors()
    • setMonitoredConnectors

      public void setMonitoredConnectors(Collection<Connector> monitoredConnectors)
      Parameters:
      monitoredConnectors - The collections of Connectors that should be monitored for low resources.
    • getMonitoredOrServerConnectors

      protected Connector[] getMonitoredOrServerConnectors()
    • isAcceptingInLowResources

      @ManagedAttribute("If false, new connections are not accepted while in low resources") public boolean isAcceptingInLowResources()
    • setAcceptingInLowResources

      public void setAcceptingInLowResources(boolean acceptingInLowResources)
    • getPeriod

      @ManagedAttribute("The monitor period in ms") public int getPeriod()
    • setPeriod

      public void setPeriod(int periodMS)
      Parameters:
      periodMS - The period in ms to monitor for low resources
    • getLowResourcesIdleTimeout

      @ManagedAttribute("The idletimeout in ms to apply to all existing connections when low resources is detected") public int getLowResourcesIdleTimeout()
    • setLowResourcesIdleTimeout

      public void setLowResourcesIdleTimeout(int lowResourcesIdleTimeoutMS)
      Parameters:
      lowResourcesIdleTimeoutMS - The timeout in ms to apply to EndPoints when in the low resources state.
    • getMaxLowResourcesTime

      @ManagedAttribute("The maximum time in ms that low resources condition can persist before lowResourcesIdleTimeout is applied to new connections as well as existing connections") public int getMaxLowResourcesTime()
    • setMaxLowResourcesTime

      public void setMaxLowResourcesTime(int maxLowResourcesTimeMS)
      Parameters:
      maxLowResourcesTimeMS - The time in milliseconds that a low resource state can persist before the low resource idle timeout is reapplied to all connections
    • getMaxMemory

      @ManagedAttribute("The maximum memory (in bytes) that can be used before low resources is triggered. Memory used is calculated as (totalMemory-freeMemory).") public long getMaxMemory()
    • setMaxMemory

      public void setMaxMemory(long maxMemoryBytes)
      Parameters:
      maxMemoryBytes - The maximum memory in bytes in use before low resources is triggered.
    • getLowResourceChecks

      public Set<LowResourceMonitor.LowResourceCheck> getLowResourceChecks()
    • setLowResourceChecks

      public void setLowResourceChecks(Set<LowResourceMonitor.LowResourceCheck> lowResourceChecks)
    • addLowResourceCheck

      public void addLowResourceCheck(LowResourceMonitor.LowResourceCheck lowResourceCheck)
    • monitor

      protected void monitor()
    • doStart

      protected void doStart() throws Exception
      Description copied from class: ContainerLifeCycle
      Starts the managed lifecycle beans in the order they were added.
      Overrides:
      doStart in class ContainerLifeCycle
      Throws:
      Exception
    • doStop

      protected void doStop() throws Exception
      Description copied from class: ContainerLifeCycle
      Stops the managed lifecycle beans in the reverse order they were added.
      Overrides:
      doStop in class ContainerLifeCycle
      Throws:
      Exception
    • setLowResources

      protected void setLowResources()
    • clearLowResources

      protected void clearLowResources()
    • low

      protected String low(String reasons, String newReason)