Package org.eclipse.jetty.server
Class AcceptRateLimit
- java.lang.Object
-
- org.eclipse.jetty.util.component.AbstractLifeCycle
-
- org.eclipse.jetty.server.AcceptRateLimit
-
- All Implemented Interfaces:
java.lang.Runnable
,java.util.EventListener
,SelectorManager.AcceptListener
,LifeCycle
@ManagedObject public class AcceptRateLimit extends AbstractLifeCycle implements SelectorManager.AcceptListener, java.lang.Runnable
A Listener that limits the rate at which new connections are accepted
If the limits are exceeded, accepting is suspended until the rate is again below the limit, so incoming connections are held in the operating system accept queue (no syn ack sent), where they may either timeout or wait for the server to resume accepting.
It can be applied to an entire server or to a specific connector by adding it via
Container.addBean(Object)
Usage:
Server server = new Server(); server.addBean(new AcceptLimit(100,5,TimeUnit.SECONDS,server)); ... server.start();
- See Also:
SelectorManager.AcceptListener
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description private class
AcceptRateLimit.Rate
-
Nested classes/interfaces inherited from class org.eclipse.jetty.util.component.AbstractLifeCycle
AbstractLifeCycle.AbstractLifeCycleListener
-
Nested classes/interfaces inherited from interface org.eclipse.jetty.util.component.LifeCycle
LifeCycle.Listener
-
-
Field Summary
Fields Modifier and Type Field Description private int
_acceptRateLimit
private java.util.List<AbstractConnector>
_connectors
private boolean
_limiting
private AcceptRateLimit.Rate
_rate
private Server
_server
private Scheduler.Task
_task
private static Logger
LOG
-
Constructor Summary
Constructors Constructor Description AcceptRateLimit(int limit, long period, java.util.concurrent.TimeUnit units, Connector... connectors)
AcceptRateLimit(int acceptRateLimit, long period, java.util.concurrent.TimeUnit units, Server server)
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description protected void
age(long period, java.util.concurrent.TimeUnit units)
protected void
doStart()
protected void
doStop()
int
getAcceptRateLimit()
long
getMaxRate()
long
getPeriod()
int
getRate()
java.util.concurrent.TimeUnit
getUnits()
protected void
limit()
void
onAccepting(java.nio.channels.SelectableChannel channel)
Called immediately after a new SelectableChannel is accepted, but before it has been submitted to theSelectorManager
.void
reset()
void
run()
private void
schedule()
protected void
unlimit()
-
Methods inherited from class org.eclipse.jetty.util.component.AbstractLifeCycle
addLifeCycleListener, getState, getState, getStopTimeout, isFailed, isRunning, isStarted, isStarting, isStopped, isStopping, removeLifeCycleListener, setStopTimeout, start, stop, toString
-
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
-
Methods inherited from interface org.eclipse.jetty.io.SelectorManager.AcceptListener
onAccepted, onAcceptFailed
-
-
-
-
Field Detail
-
LOG
private static final Logger LOG
-
_server
private final Server _server
-
_connectors
private final java.util.List<AbstractConnector> _connectors
-
_rate
private final AcceptRateLimit.Rate _rate
-
_acceptRateLimit
private final int _acceptRateLimit
-
_limiting
private boolean _limiting
-
_task
private Scheduler.Task _task
-
-
Method Detail
-
getAcceptRateLimit
@ManagedAttribute("The accept rate limit") public int getAcceptRateLimit()
-
getPeriod
@ManagedAttribute("The accept rate period") public long getPeriod()
-
getUnits
@ManagedAttribute("The accept rate period units") public java.util.concurrent.TimeUnit getUnits()
-
getRate
@ManagedAttribute("The current accept rate") public int getRate()
-
getMaxRate
@ManagedAttribute("The maximum accept rate achieved") public long getMaxRate()
-
reset
@ManagedOperation(value="Resets the accept rate", impact="ACTION") public void reset()
-
age
protected void age(long period, java.util.concurrent.TimeUnit units)
-
doStart
protected void doStart() throws java.lang.Exception
- Overrides:
doStart
in classAbstractLifeCycle
- Throws:
java.lang.Exception
-
doStop
protected void doStop() throws java.lang.Exception
- Overrides:
doStop
in classAbstractLifeCycle
- Throws:
java.lang.Exception
-
limit
protected void limit()
-
unlimit
protected void unlimit()
-
onAccepting
public void onAccepting(java.nio.channels.SelectableChannel channel)
Description copied from interface:SelectorManager.AcceptListener
Called immediately after a new SelectableChannel is accepted, but before it has been submitted to theSelectorManager
.- Specified by:
onAccepting
in interfaceSelectorManager.AcceptListener
- Parameters:
channel
- the accepted channel
-
schedule
private void schedule()
-
run
public void run()
- Specified by:
run
in interfacejava.lang.Runnable
-
-