nginx - 为什么nginx有3个进程?

标签 nginx nginx-config

我的操作系统是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/

相关文章:

nginx 在不使用 lua 模块的情况下匹配请求体

regex - 关于如何在 Nginx 位置 block 部分使用正则表达式的指南?

docker - Nginx HTTP 未重定向到 HTTPS 400 错误请求 "The plain HTTP request was sent to HTTPS port"

django - 使用 nginx+gunicorn+django 的间歇性 502s

amazon-web-services - 即使运行Docker容器也无法访问AWS EC2实例

php - Nginx 位置覆盖 Laravel 5.2 路由?

amazon-web-services - AWS 弹性 Beanstalk : nginx reload failed

reactjs - 将所有请求发送到 index.html 除了某些扩展

regex - Nginx 位置匹配多个扩展名,除非路径以特定单词开头

redirect - nginx重写文件夹的重定向