我在 Nginx 服务器(v 1.21.6)上运行 wordpress 网站。
最近我看到了如下错误。
2022/03/07 19:43:41 [crit] 563445#563445: accept4() failed (24: Too many open files)
2022/03/07 19:43:42 [crit] 563445#563445: accept4() failed (24: Too many open files)
我重新启动Nginx,网站访问正常。
然后,我用 Google 搜索来解决这个问题,出现了很多让我困惑的教程和值。
我的系统信息
ulimit -Hn
1048576
ulimit -Sn
1024
core file size (blocks, -c) 0
data seg size (kbytes, -d) unlimited
scheduling priority (-e) 0
file size (blocks, -f) unlimited
pending signals (-i) 7581
max locked memory (kbytes, -l) 65536
max memory size (kbytes, -m) unlimited
open files (-n) 1024
pipe size (512 bytes, -p) 8
POSIX message queues (bytes, -q) 819200
real-time priority (-r) 0
stack size (kbytes, -s) 8192
cpu time (seconds, -t) unlimited
max user processes (-u) 7581
virtual memory (kbytes, -v) unlimited
file locks (-x) unlimited
然后我将以下值添加到 /etc/sysctl.conf。
fs.file-max = 70000
这解决了我所有的问题吗?
如果不是这种情况,我很想听听一些关于是否应该添加其他设置的建议。
谢谢。
答案1
我将以下值添加到 /etc/sysctl.conf。
fs.file-max = 70000
这sysctl
命令用于修改内核参数在运行时。它可以将单个参数作为参数,即sysctl fs.file-max
读取参数的当前值或sysctl fs.file-max=98036
设置该值,或者sysctl -p /path/to/file
从文件中读取参数。
文件/etc/sysctl.conf
(以及一些其他文件)是内核参数的默认预加载/配置文件。
仅仅更改该文件不会产生任何影响。
您需要重新启动或者运行[sudo] sysctl --system
以应用更改的设置。
该ulimit
命令获取/设置资源限制内核针对特定用户或进程强制执行。
尽管你可以设置资源ulimit
限制“无限”或者看似更现实,但仍然具有超过相关内核参数的值,这样做不会使这种情况发生。
系统资源是有限的,当有这样的内核参数时,那就是可用的上限。