在 nginx.conf 中设置正确的值worker_rlimit_nofile
是否足以解决 nginx 中的问题Too many open files
?
或者我仍需要更新sysctl.conf
和limits.conf
?
答案1
在 Linux 中,您可以通过运行以下命令查看该选项是否改变了进程的限制:
cat /proc/<PID>/limits
nginex 的进程 ID 在哪里<PID>
。在开发环境上测试。
如果该选项没有改变限制,或者您的硬限制过于严格,则需要nofile
在 /etc/security/limits.conf 文件中进行更改。
答案2
我认为您不需要修改 limits.conf。worker_rlimit_nofile 的目的是通过 RLIMIT_NOFILE 提供一种快速而简单的方法来执行此操作。
但是,操作系统设置了硬系统限制,您可能需要使用 sysctl.conf 来覆盖这些限制。
实际上,我通常会将 sysctl 中的 fs.file-max 设置为应用程序的 rlimit 的 4 倍左右。这样做没有任何依据,只是我不希望因为达到此限制而导致某些事情失败。而且 2-4 倍的范围通常足够高,仅在应用程序出现重大问题时才会触发。