我的操作系统是Ubuntu,我使用ps -aux |grep nginx
,我找到了3个nginx的进程;所以我的问题是为什么 nginx 有 3 个进程?似乎一个进程是 root,另外两个来自 www-data:
root 7833 0.0 0.0 126092 1476 ? Ss 12:32 0:00 nginx: master process /usr/sbin/nginx -g daemon on; master_process on;
www-data 7834 0.0 0.0 126504 3124 ? S 12:32 0:00 nginx: worker process
www-data 7835 0.0 0.1 126504 5068 ? S 12:32 0:00 nginx: worker process
最佳答案
作为 root
运行的进程是主 NGINX 进程。
另外两个是worker 进程。
在NGINX服务启动过程中,master进程是第一个启动的。 它跨越实际处理连接的工作进程。
master 进程以 root 身份运行,以便能够执行诸如绑定(bind)到特权网络端口、在配置加载期间读取 TLS 证书/ key 等操作。
工作进程已放弃权限,因为它们只需要能够读取网站文件。
工作进程的数量可以用worker_processes
控制。配置指令。默认值为 1
。这意味着在具有默认配置的系统上,您将看到总共 2 个进程(1 个主进程和 1 个工作进程)。
您拥有的工作进程越多,您的网络服务器在多核系统上可以处理的连接就越多。
例如你有 4 核 CPU。通过设置 worker_processes 4;
,您可以确保所有核心都用于处理连接,因此它会提高繁忙网站的性能。
此外,您可以设置 worker_processes auto;
。这将使 NGINX 确定逻辑 CPU 单元的数量并设置与之对应的 worker 数量。
关于nginx - 为什么nginx有3个进程?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62020202/