nginx的worker进程数需要设置成与CPU核心数一致吗

看到有资料上说,一般把nginx的worker进程数设置成与CPU核心数一致。不理解这么做是什么原因?是因为几个核心就可以维持几个nginx的worker吗?
这与进程或者线程有什么关系?
请教,请详细解说一下。谢谢。

阅读 8.9k
4 个回答

这与两点有关,一是Ngnix一般只做高并发代理,基本没用IO操作,算是CPU密集操作,所以再处理时基本是瞬时完成的,很少出现IO阻塞。二是进程与CPU调度的关系,单个核心处理多个进程的时候,是排队处理的,所以将Worker进程数量设置超过核心数是没有太大意义的。

一个worker对应一个进程,要想达到真正的“同时执行”,进程数要和cpu核心数相等。
否则过多的话,会导致进程间额外的切换开销

一个linux 主机,什么不开,也轻轻松松十几个进程,nginx进程数跟cpu核数一样,也不能让每一个进程占用一个cpu核

  1. "一般把nginx的worker进程数设置成与CPU核心数一致" 不是必须的,比如你自己的测试活着开发环境。

  2. 一个worker就是一个进程,与CPU核数一致的情况下,可以减少不必要的,因为系统调度造成的性能损失。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题