linux - nginx工作进程对于单CPU来说最好有1个或多个进程吗?

标签 linux nginx

我听到了非常有趣的事情..

If we have 1 cpu and we spawn 2 worker processes, it means that each worker process uses 50% resource of that 1 cpu. If we had spawned 1 worker processes, resources from cpu for this worker process would be 100%. So for 1 cpu only, it's better to have only 1 single worker process.

然后他继续:

worker_connections is how many connections each worker process can accept. I have 1024.

然后他又继续:

So, worker_processes * worker_connections = max connections.

所以问题:如果worker_processes * worker_connections = maxconnections,那么即使只有 1 个 cpu,拥有 2 个工作进程不是也很好吗?这样 2 * 1024 = 2048 个连接会比 1 * 1024 更好。我错了还是会发生什么?

最佳答案

NGINX 使用事件驱动模型。大多数事件来自网络服务,CPU 正在等待来自磁盘或网络的 IO。 Nginx 在等待某些事情发生时不会阻塞。

如果您要解决的问题是如何使用一个 CPU 获得 2048 个连接?那么您的最佳配置就是。

worker_processes number  auto;  
worker_connections 2048;

自动默认为 CPU 数量,即 1。

nginx 中的连接是轻量级的。它们不使用太多内存。

如果你有 2 个worker_processes 和 1 个 CPU,那么内核将不得不在这 2 个进程之间不断切换。这种上下文切换会增加一些您不需要的开销。

这里写得很好: https://www.nginx.com/blog/inside-nginx-how-we-designed-for-performance-scale/

关于linux - nginx工作进程对于单CPU来说最好有1个或多个进程吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55620337/

相关文章:

php - 从 php 运行 crontab 命令

当应用程序崩溃时,Linux 系统卡住

linux - 命令输出在重定向时被破坏

ubuntu - 在 ubuntu 服务器上设置 nginx proxy_pass

Linux:如何在连接的监视器上监视和传入 ssh session

linux - awk + ​​从用双引号定义的行打印字段

django - 如何在 unix 套接字上绑定(bind) Daphne?

amazon-web-services - 我的 s3 存储桶如何使用 nginx 在不同文件夹中托管多个网站?

nginx - 如何配置NGINX路由?

PHP move_uploaded_file 失败且没有错误