nginx uLimit'worker_connections超过打开的文件资源限制:1024'


15

我不断收到此错误,nginx/error.log并让我发疯:

8096 worker_connections exceed open file resource limit: 1024

我已经尝试了所有我能想到的东西,但无法弄清楚什么限制了Nginx。你能告诉我我想念什么吗?

nginx.conf 有这个:

worker_processes 4;
events {
        worker_connections 8096;
        multi_accept on;
        use epoll;
}

我这样更改了系统的Ulimit security/limits.conf

# This is added for Open File Limit Increase
*               hard    nofile          199680
*               soft    nofile          65535

root            hard    nofile          65536
root            soft    nofile          32768

# This is added for Nginx User
nginx           hard    nofile          199680
nginx           soft    nofile          65535

它仍然显示错误。所以我也尝试编辑/etc/default/nginx并添加了这一行:

ULIMIT="-n 65535"

它仍然显示相同的错误。无法弄清楚是什么将nginx worker连接限制为仅1024。您能指出我吗?

我有Debian 7 + Nginx

Answers:


30

worker_rlimit_nofile 65535;在主上下文中在nginx.conf中设置。


1
而已!这样就解决了。哦,你是个救星。它现在即使ULIMIT不手动设置/etc/default/nginx file。太棒了 谢谢@Xaviour
Neel

1
Xavier做得好。
Dave Holland

@Xavier确实消除了错误msg,但是您能否解释为什么在不更改ulimit的情况下就可以正常工作,如下面的答案所述?谷歌搜索告诉更改ulimits.conf或systcl.conf中的ulimit,但没有一个对我有用。
Bsienn

2

成为用户:

su - nginx

检查限制:

ulimit -Hn
ulimit -Sn

编辑文件系统将允许您打开的文件数:

vi /etc/sysctl.conf
fs.file-max = 70000

加载您的更改:

sysctl -p

看看是否有帮助。


我正在使用init并没有安装systemctl。那会有所作为吗?
Neel 2014年

当我更改为Nginx用户时,ulimit -Hn在那里正确显示。然后init.d/nginx,我检查了一下,它检查是否在默认文件夹中设置了ULIMIT(已经设置了该值),然后应该设置该值,但没有设置:Check if the ULIMIT is set in /etc/default/nginx
Neel 2014年

更改file-max后,我立即运行sysctl -pubuntu 18.04.2挂起,抛出太多文件,无法启动,必须​​删除安全启动中的代码才能再次启动OS。
Bsienn
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.