Find centralized, trusted content and collaborate around the technologies you use most.
Teams
Q&A for work
Connect and share knowledge within a single location that is structured and easy to search.
我有一个使用 Netty (3.6.6-Final) 的高速 UDP 服务器,但请注意后端服务器可能需要 1 到 10 秒来响应 - 我无法控制这些,因此无法改善那里的延迟。
发生的情况是所有处理程序工作线程都忙于等待响应,并且任何新请求都必须等待处理,随着时间的推移,这个响应来得很晚。是否可以针对给定的请求发现线程池已耗尽,以便及早拦截请求并发出服务器繁忙响应?
我会使用一个ExecutionHandler配置有适当ThreadPoolExecutor的、最大线程数和有界任务队列的。通过选择不同的RejectedExecutionHandler策略,您可以RejectedExecutionException用“服务器忙”来回答,或者使用“调用者运行策略”,在这种情况下,IO 工作线程将执行任务并创建一个推回(但这就是你想避免)。
ExecutionHandler
ThreadPoolExecutor
RejectedExecutionHandler
RejectedExecutionException
无论哪种方式,容量有限的执行处理程序都是前进的方向。