如何设置Jetty上接受的最大连接数

时间:2014-01-31 10:57:24

标签: java jetty

final SslSocketConnector conn = new SslSocketConnector(sslContextFactory);
        conn.setReuseAddress(true);
        conn.setPort(port);

ResourceHandler resources = new ResourceHandler();
        resources.setCacheControl("no-cache"); 
        resources.setDirectoriesListed(true);
        resources.setWelcomeFiles(new String[] { "abc.blank" });
        resources.setResourceBase(fileLoc);

server.setConnectors(new Connector[] { conn });
        server.setHandler(resources);

我有如上所述的Jetty(8.0)设置。但由于我的文件很大,我需要定义允许的最大连接数。我该怎么办?

3 个答案:

答案 0 :(得分:1)

尝试以下方法:

QueuedThreadPool tp = (QueuedThreadPool) server.getThreadPool();
tp.setMaxThreads(10);
server.setThreadPool(tp);

答案 1 :(得分:0)

我建议使用Quality of Service过滤器将其限制为特定数字,而不是尝试以这种方式使用线程池。这种方式可以锁定应用程序中的特定位置,或者特定的servlet路径,而不会影响整个Web应用程序。

http://www.eclipse.org/jetty/documentation/current/qos-filter.html

[编辑] 我建议使用DefaultServlet在这里提供静态内容,它通常更好,因为它支持缓存和范围(资源处理程序已经改进了Jetty 9中的一些)。

答案 2 :(得分:0)

在考虑了@wolfrevo建议的解决方案后,这对我有用。

QueuedThreadPool tp = new QueuedThreadPool(1);
// This will keep requests in queue until the current job is over
//  or client times out.
tp.setMaxQueued(connectionCount);
tp.setMaxThreads(threadCount);
tp.setMaxIdleTimeMs(maxIdle);
server.setThreadPool(tp);