我听到了非常有趣的事情..
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/