【问题标题】:How to tell for a particular request that all available worker threads are BUSY如何告诉特定请求所有可用的工作线程都忙
【发布时间】:2013-06-25 11:49:33
【问题描述】:

我有一个使用 Netty (3.6.6-Final) 的高速 UDP 服务器,但请注意后端服务器可能需要 1 到 10 秒来响应 - 我无法控制这些,因此无法改善那里的延迟。

发生的情况是所有处理程序工作线程都忙于等待响应,并且任何新请求都必须等待得到处理,随着时间的推移,这个响应来得很晚。是否可以针对给定请求发现线程池已耗尽,以便及早拦截请求并发出服务器繁忙响应?

【问题讨论】:

    标签: udp netty


    【解决方案1】:

    我会使用配置了适当的ThreadPoolExecutorExecutionHandler,具有最大线程数和有界任务队列。通过选择不同的RejectedExecutionHandler 策略,您可以捕获RejectedExecutionException 以“服务器忙”回答,或者使用“调用者运行策略”,在这种情况下,IO 工作线程将执行任务并创建回推(但这是你想要避免的)。

    无论哪种方式,容量有限的执行处理程序都是前进的方向。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-09-16
      • 2014-04-04
      • 2018-12-03
      • 1970-01-01
      • 2023-04-02
      相关资源
      最近更新 更多