gpt4 book ai didi

java - 我如何限制 Jetty 接受的连接数?

转载 作者:太空狗 更新时间:2023-10-29 22:38:01 40 4
gpt4 key购买 nike

我正在运行 Jetty 7.2.2 并想限制它将处理的连接数,这样当它达到限制(例如 5000)时,它将开始拒绝连接。

不幸的是,所有的 Connectors 似乎只是继续并尽可能快地接受传入的连接并将它们分派(dispatch)到配置的线程池。

我的问题是我在一个受限的环境中运行,而且我只能访问 8K 文件描述符。如果我收到一堆连接,我会很快用完文件描述符并进入不一致状态。

我有一个选择是返回 HTTP 503 服务不可用,但这仍然需要我接受并响应连接 - 我会在某处跟踪传入连接的数量,也许是通过编写一个 servlet 过滤器。

有更好的解决方案吗?

最佳答案

线程池有一个与之关联的队列。默认情况下,它是无界的。但是,在创建线程池时,您可以提供一个有界队列作为它的基础。例如:

Server server = new Server();
LinkedBlockingQueue<Runnable> queue = new LinkedBlockingQueue<Runnable>(maxQueueSize);
ExecutorThreadPool pool = new ExecutorThreadPool(minThreads, maxThreads, maxIdleTime, TimeUnit.MILLISECONDS, queue);
server.setThreadPool(pool);

这似乎已经解决了我的问题。否则,对于无界队列,服务器在重负载下启动时会耗尽文件句柄。

关于java - 我如何限制 Jetty 接受的连接数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5737923/

40 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com