- java.lang.Object
-
- org.eclipse.jetty.util.component.AbstractLifeCycle
-
- org.eclipse.jetty.util.component.ContainerLifeCycle
-
- org.eclipse.jetty.server.LowResourceMonitor
-
- All Implemented Interfaces:
org.eclipse.jetty.util.component.Container
,org.eclipse.jetty.util.component.Destroyable
,org.eclipse.jetty.util.component.Dumpable
,org.eclipse.jetty.util.component.LifeCycle
@ManagedObject("Monitor for low resource conditions and activate a low resource mode if detected") public class LowResourceMonitor extends org.eclipse.jetty.util.component.ContainerLifeCycle
A monitor for low resources, low resources can be detected by:ThreadPool.isLowOnThreads()
ifConnector.getExecutor()
is an instance ofThreadPool
andsetMonitorThreads(boolean)
is true.- If
setMaxMemory(long)
is non zero then low resources is detected if the JVMsRuntime
instance hasRuntime.totalMemory()
minusRuntime.freeMemory()
greater thangetMaxMemory()
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description class
LowResourceMonitor.ConnectorsThreadPoolLowResourceCheck
static interface
LowResourceMonitor.LowResourceCheck
class
LowResourceMonitor.MainThreadPoolLowResourceCheck
class
LowResourceMonitor.MaxConnectionsLowResourceCheck
class
LowResourceMonitor.MemoryLowResourceCheck
-
Nested classes/interfaces inherited from class org.eclipse.jetty.util.component.AbstractLifeCycle
org.eclipse.jetty.util.component.AbstractLifeCycle.AbstractLifeCycleListener, org.eclipse.jetty.util.component.AbstractLifeCycle.StopException
-
-
Constructor Summary
Constructors Constructor Description LowResourceMonitor(Server server)
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description void
addLowResourceCheck(LowResourceMonitor.LowResourceCheck lowResourceCheck)
protected void
clearLowResources()
protected void
doStart()
protected void
doStop()
protected boolean
enableLowOnResources(boolean expectedValue, boolean newValue)
java.util.Set<LowResourceMonitor.LowResourceCheck>
getLowResourceChecks()
int
getLowResourcesIdleTimeout()
java.lang.String
getLowResourcesReasons()
long
getLowResourcesStarted()
int
getMaxLowResourcesTime()
long
getMaxMemory()
java.util.Collection<Connector>
getMonitoredConnectors()
protected Connector[]
getMonitoredOrServerConnectors()
boolean
getMonitorThreads()
int
getPeriod()
java.lang.String
getReasons()
boolean
isAcceptingInLowResources()
boolean
isLowOnResources()
protected java.lang.String
low(java.lang.String reasons, java.lang.String newReason)
protected void
monitor()
void
setAcceptingInLowResources(boolean acceptingInLowResources)
void
setLowResourceChecks(java.util.Set<LowResourceMonitor.LowResourceCheck> lowResourceChecks)
protected void
setLowResources()
void
setLowResourcesIdleTimeout(int lowResourcesIdleTimeoutMS)
protected void
setLowResourcesReasons(java.lang.String reasons)
void
setLowResourcesStarted(long lowStarted)
void
setMaxLowResourcesTime(int maxLowResourcesTimeMS)
void
setMaxMemory(long maxMemoryBytes)
void
setMonitoredConnectors(java.util.Collection<Connector> monitoredConnectors)
void
setMonitorThreads(boolean monitorThreads)
void
setPeriod(int periodMS)
protected void
setReasons(java.lang.String reasons)
-
Methods inherited from class org.eclipse.jetty.util.component.ContainerLifeCycle
addBean, addBean, addEventListener, addManaged, contains, destroy, dump, dump, dump, dumpObjects, dumpStdErr, getBean, getBeans, getBeans, getContainedBeans, getContainedBeans, isAuto, isManaged, isUnmanaged, manage, removeBean, removeBeans, removeEventListener, setBeans, setStopTimeout, start, stop, unmanage, updateBean, updateBean, updateBeans
-
Methods inherited from class org.eclipse.jetty.util.component.AbstractLifeCycle
getEventListeners, getState, getState, getStopTimeout, isFailed, isRunning, isStarted, isStarting, isStopped, isStopping, setEventListeners, start, stop, toString
-
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
-
-
-
-
Field Detail
-
_server
protected final Server _server
-
-
Constructor Detail
-
LowResourceMonitor
public LowResourceMonitor(@Name("server") Server server)
-
-
Method Detail
-
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 areThreadPool
instances that are low on threads.
-
getReasons
@ManagedAttribute("The reasons the monitored connectors are low on resources") public java.lang.String getReasons()
-
setReasons
protected void setReasons(java.lang.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 java.lang.String getLowResourcesReasons()
-
setLowResourcesReasons
protected void setLowResourcesReasons(java.lang.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 java.util.Collection<Connector> getMonitoredConnectors()
-
setMonitoredConnectors
public void setMonitoredConnectors(java.util.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 java.util.Set<LowResourceMonitor.LowResourceCheck> getLowResourceChecks()
-
setLowResourceChecks
public void setLowResourceChecks(java.util.Set<LowResourceMonitor.LowResourceCheck> lowResourceChecks)
-
addLowResourceCheck
public void addLowResourceCheck(LowResourceMonitor.LowResourceCheck lowResourceCheck)
-
monitor
protected void monitor()
-
doStart
protected void doStart() throws java.lang.Exception
- Overrides:
doStart
in classorg.eclipse.jetty.util.component.ContainerLifeCycle
- Throws:
java.lang.Exception
-
doStop
protected void doStop() throws java.lang.Exception
- Overrides:
doStop
in classorg.eclipse.jetty.util.component.ContainerLifeCycle
- Throws:
java.lang.Exception
-
setLowResources
protected void setLowResources()
-
clearLowResources
protected void clearLowResources()
-
low
protected java.lang.String low(java.lang.String reasons, java.lang.String newReason)
-
-