我的网站最近流量很大,我认为问题是 nginx 花费了太多时间来安排请求。我增加了 worker_processes,这似乎解决了这个问题。
说实话,我真的不明白为什么。
我想知道是否有人可以指出/解释 nginx 工作者如何工作,以及 worker_rlimit_nofile 是什么,以便我可以对将来必须进行的更改有更好的概念理解。
答案1
在 nginx 中,worker_processes
nginx 将生成进程数。默认值为1是worker_rlimit_nofile
每个工作进程可以打开的最大文件描述符。增加时要小心,因为这会影响服务器将处理的worker_processes
最大客户端数量。worker_processes
2或者4在多处理器机器上工作时是可以的。
您还可以更改worker_connections
每个工作进程的最大连接数参数。
在您的情况下,似乎每秒处理的请求数量非常大,而默认的 nginx 工作程序在磁盘 IO 上花费了太多时间。
答案2
我不熟悉 nginx,但为了帮助您入门,我提供一些常规的 *nix 守护进程信息:
nofile 往往是进程的最大打开文件数(文件描述符)资源限制。因此,这很可能是每个工作进程可以打开的文件数(文件包括套接字)。请参阅 ulimit 和 /etc/security/limits.conf 。
许多守护进程都有一个进程,它会生成新进程来响应请求。因此,通过增加工作进程的数量,您可能已经生成了进程并准备好回答问题请求。