我试图弄清楚如何获得jetty允许打开的最大数量的websockets。它似乎从我的笔记本电脑镀铬高峰254。我正在尝试确定它是否有铬限制或码头限制或其他。
package jetty;
import org.eclipse.jetty.server.Server;
import org.eclipse.jetty.websocket.server.WebSocketHandler;
import org.eclipse.jetty.websocket.servlet.WebSocketServletFactory;
public class WebSocketTest {
public static void main(String[] args) throws Exception {
Server server = new Server(8383);
WebSocketHandler wsHandler = new WebSocketHandler() {
@Override
public void configure(WebSocketServletFactory factory) {
factory.getPolicy().setIdleTimeout(-1);
factory.register(MyWebSocketHandler.class);
}
};
server.setHandler(wsHandler);
server.start();
server.join();
}
}
答案 0 :(得分:1)
这取决于您的ThreadPool
配置。
默认情况下,服务器以QueuedThreadPool
开头,最多包含200个线程。
注意:线程池中的线程数与websockets数之间没有1对1的关系。如果您有空闲的websockets,则该线程将返回池以供其他活动的websockets使用。
从200个最大线程ThreadPool
配置中提供40,000个活动的websockets非常容易。
ThreadPool
已创建,然后传入Server
构造函数,就像这样......
ThreadPool threadPool = new QueuedThreadPool(400);
Server server = new Server(threadPool);
ServerConnector http = new ServerConnector(server);
http.setPort(8080);
server.addConnector(http);