网络绑定任务的线程池大小调整

时间:2009-07-15 08:52:06

标签: networking threadpool

调整包含以下任务的线程池的基本规则是什么:

  • 始终是网络绑定的;
  • 以不同的吞吐量和延迟访问外部服务。

我主要担心的是最佳使用带宽(不按顺序处理任务,但也不要打开1200个网络连接);

2 个答案:

答案 0 :(得分:1)

您的网络访问是同步还是异步?

如果您的网络访问和请求处理是异步的,那么线程池大小可以是=>可用内核数+ 1。

更新:可用内核,我指的是系统上可用的物理处理器数量。即使对于使用异步I / O的服务器,也需要线程池来利用多个物理处理器。

如果您的网络访问和请求处理是同步的,那么调整线程池的大小没有硬性规则。在这种情况下,最好使线程池大小可配置。 鉴于您的请求处理不受CPU限制,对默认值的猜测可能是:

(请求处理延迟/网络延迟)*(可用内核数+ 1) 最大值为4 * Avaliable cores的数量。

答案 1 :(得分:0)

我不是专家,但你不应该每个任务都有一个帖子吗? 线程将阻塞/轮询,直到数据可用。 如果您正在等待连接,则启动一个线程来处理连接处理程序中的每个连接。