我们使用 Jetty 8.1 作为嵌入式 HTTP 服务器。在过载情况下,服务器有时会开始使用以下消息淹没日志文件:
warn: java.util.concurrent.RejectedExecutionException
warn: Dispatched Failed! SCEP@76107610{l(...)<->r(...),d=false,open=true,ishut=false,oshut=false,rb=false,wb=false,w=true,i=1r}...
相同的消息重复了数千次,并且日志记录的数量似乎减慢了整个系统的速度。消息本身很好,我们的请求处理程序只是为了及时处理请求。但是大量的重复消息实际上使事情变得更糟,并使系统更难以从过载中恢复。
所以,我的问题是:这是正常行为,还是我们做错了什么?以下是我们设置服务器的方式:
Server server = new Server();
SelectChannelConnector connector = new SelectChannelConnector();
connector.setAcceptQueueSize( 10 );
server.setConnectors( new Connector[]{ connector } );
server.setThreadPool( new ExecutorThreadPool( 32, 32, 60, TimeUnit.SECONDS,
new ArrayBlockingQueue<Runnable>( 10 )));