我的个人博客:逐步前行STEP
nginx.conf配置文件中有一个worker_processes配置项,默认配置为:
worker_processes 1
worker进程的数量会直接影响性能。
每一个worker进程都是单线程进程,它们调用各个模块以实现多种多样的功能,如果这些模块确认不会出现阻塞式调用,那么,有多少个CPU内核就配置多少个worker进程,如果有可能出现阻塞式调用,就需要稍多一些worker进程。
例如 :
如果业务需要大量读取磁盘上的静态文件,而且服务器上的内存较小,以至于大部分的请求访问静态文件时都必须读取磁盘,而不是内存中的磁盘缓存,那么磁盘I/O调用可能会阻塞住worker进程少量时刻,进而导致服务整体性能下降。
多worker进程可以充分利用多核系统架构,但若worker进程的数量多于CPU内核数,那么会增大进程间切换带来的消耗(Linux是抢占式内核)。 一般情况下,用户配置与内核数相等的worker进程,并使用worker_cpu_affinity配置来绑定CPU内核。