用nginx打开文件太多,似乎无法提高限制

服务器是Ubuntu 13.04(GNU / Linux 3.9.3-x86_64-linode33 x86_64)。

nginx是nginx / 1.2.6。

我一直在这个工作了几个小时,所以这是我得到的,这是我所做的。

tail -f /usr/local/nginx/logs/error.log 2013/06/18 21:35:03 [crit] 3427#0: accept4() failed (24: Too many open files) 2013/06/18 21:35:04 [crit] 3427#0: accept4() failed (24: Too many open files) 2013/06/18 21:35:04 [crit] 3427#0: accept4() failed (24: Too many open files) 2013/06/18 21:35:04 [crit] 3427#0: accept4() failed (24: Too many open files) 2013/06/18 21:35:04 [crit] 3427#0: accept4() failed (24: Too many open files) 2013/06/18 21:35:04 [crit] 3427#0: accept4() failed (24: Too many open files) 2013/06/18 21:35:04 [crit] 3427#0: accept4() failed (24: Too many open files) 2013/06/18 21:35:04 [crit] 3427#0: accept4() failed (24: Too many open files) 2013/06/18 21:35:04 [crit] 3427#0: accept4() failed (24: Too many open files) 2013/06/18 21:35:04 [crit] 3427#0: accept4() failed (24: Too many open files) 2013/06/18 21:35:04 [crit] 3427#0: accept4() failed (24: Too many open files) 2013/06/18 21:35:04 [crit] 3427#0: accept4() failed (24: Too many open files) 2013/06/18 21:35:05 [crit] 3426#0: accept4() failed (24: Too many open files) 

运行Nginx:

 geuis@localhost:~$ ps aux | grep nginx root 3422 0.0 0.0 39292 380 ? Ss 21:30 0:00 nginx: master process /usr/local/nginx/sbin/nginx nobody 3423 3.7 18.8 238128 190848 ? S 21:30 0:13 nginx: worker process nobody 3424 3.8 19.0 236972 192336 ? S 21:30 0:13 nginx: worker process nobody 3426 3.6 19.0 235492 192192 ? S 21:30 0:13 nginx: worker process nobody 3427 3.7 19.0 236228 192432 ? S 21:30 0:13 nginx: worker process nobody 3428 0.0 0.0 39444 468 ? S 21:30 0:00 nginx: cache manager process 

修改/etc/security/limits.conf中的软/硬限制(从文件末尾开始的设置)

 root soft nofile 65536 root hard nofile 65536 www-data soft nofile 65536 www-data hard nofile 65536 nobody soft nofile 65536 nobody hard nofile 65536 

读取最大文件

 cat /proc/sys/fs/file-max 500000 

并在/etc/pam.d/common-session:

 session required pam_limits.so 

随着这个添加和服务器重新启动好的措施,对于nginx我通过获得父进程的PID计数软/硬限制和:

 cat /proc/<PID>/limits Limit Soft Limit Hard Limit Units Max open files 1024 4096 files 

父进程以“root”身份运行,4名工作人员以“nobody”运行。

 root 2765 0.0 0.0 39292 388 ? Ss 00:03 0:00 nginx: master process /usr/local/nginx/sbin/nginx nobody 2766 3.3 17.8 235336 180564 ? S 00:03 0:21 nginx: worker process nobody 2767 3.3 17.9 235432 181776 ? S 00:03 0:21 nginx: worker process nobody 2769 3.4 17.9 236096 181524 ? S 00:03 0:21 nginx: worker process nobody 2770 3.3 18.3 235288 185456 ? S 00:03 0:21 nginx: worker process nobody 2771 0.0 0.0 39444 684 ? S 00:03 0:00 nginx: cache manager process 

我已经尝试了一切我知道该怎么做,并能从Google获得。 我无法获得nginx的文件限制。

帮帮我?

将以下行添加到您的nginx并重新启动进程:

worker_rlimit_nofile 30000;

这将允许工作人员采取更多的文件。 然后您可以validation:

su - nobody
ulimit -Hn
ulimit -Sn

这应该输出新的硬/软限制。

参考

在Ubuntu中,编辑/etc/pam.d/su添加或取消注释所需的行会话pam_limits.so

另外,在/etc/security/limits.conf中,确保在字符之间有空格而不是空格。

确保在编辑这些文件后运行以下命令

 sysctl -p 

然后重新启动nginx