正如标题所述,我的 Nginx 服务器似乎不断崩溃,尽管原因未知。
我的错误日志中确实有一些可能导致该问题的提示。
我尝试增加打开文件的限制,这有一定的影响,但没有太大的效果。
2015/09/29 17:18:01 [crit] 20560#0: accept4() failed (24: Too many open files)
2015/09/29 17:18:01 [crit] 20560#0: accept4() failed (24: Too many open files)
我尝试增加限制,但我在错误日志中也看到了这一点
2015/09/29 17:18:02 [alert] 20632#0: setrlimit(RLIMIT_NOFILE, 300000000) failed (1: Operation not permitted)
2015/09/29 17:18:02 [alert] 20633#0: setrlimit(RLIMIT_NOFILE, 300000000) failed (1: Operation not permitted)
2015/09/29 17:18:02 [alert] 20560#0: recvmsg() truncated data
我如何授予增加文件限制的权限?
此外,这甚至是我的服务器崩溃的原因吗?
谢谢你!
刚刚检查了更多数据,我已经编辑了我的文件,但是由于某种原因,在检查硬限制时它显示 4096?
root@nalsec:~# sysctl -p
net.ipv4.ip_forward = 1
net.ipv6.conf.all.autoconf = 0
net.ipv6.conf.default.autoconf = 0
net.ipv6.conf.eth0.autoconf = 0
net.ipv6.conf.all.accept_ra = 0
net.ipv6.conf.default.accept_ra = 0
net.ipv6.conf.eth0.accept_ra = 0
fs.file-max = 2500000000000000000
root@nalsec:~# ulimit -Hn
4096
这与我的 fs.file-max 形成对比
我试过了,它说我没有权限(我是root)
root@nalsec:~# ulimit -Hn 1000000000
-bash: ulimit: open files: cannot modify limit: Operation not permitted
我已经编辑了这个文件但无济于事 nano /etc/security/limits.conf
#@faculty hard nproc 50
#ftp hard nproc 0
#ftp - chroot /ftp
#@student - maxlogins 4
# End of file
nginx soft nofile 10240000000000000000000
nginx hard nofile 10240000000000000000000
* hard nofile 10240000000000000000000000
* soft nofile 10240000000000000000000000
root hard nofile 10240000000000000000000000
root soft nofile 10240000000000000000000000
www-data soft nofile 1024000000000000000
www-data hard nofile 1024000000000000000
答案1
fs.file-max
是系统范围内的限制全部的系统上可以打开的文件描述符的数量。它对每个进程的限制没有影响。
要增加单个进程的文件描述符限制,最简单的方法是通过以下方式limits.conf
:
# cat /etc/security/limits.d/nofile.conf
* soft nofile 10000
* hard nofile 1000000
setrlimit
这样将默认为所有进程提供 10,000 个文件描述符,并且如果需要,可以请求升级到 1,000,000(通过)。