php-fastcgi fpm和Nginx报错setrlimit(RLIMIT_NOFILE) failed

作者 FarLee 2012年10月29日 15:45:47   ‖浏览(11,049)

近日 Burst.net 的两台vps 频繁出现php-fastcgi fpm 和nginx 自动关闭的情况。查看最近的php-fpm错误日志 /usr/local/php/logs/php-fpm.log 发现以下报错信息:

Oct 29 10:55:05.492413 [NOTICE] fpm_unix_init_main(), line 284: getrlimit(nofile): max:1024, cur:1024
Oct 29 10:55:05.504248 [NOTICE] fpm_event_init_main(), line 88: libevent: using epoll
Oct 29 10:55:05.512693 [NOTICE] fpm_init(), line 52: fpm is running, pid 21732
Oct 29 10:55:05.513923 [NOTICE] fpm_children_make(), line 352: child 21735 (pool default) started

Oct 29 10:55:43.358183 [WARNING] fpm_stdio_child_said(), line 167: child 21896 (pool default) said into stderr: “Oct 29 10:55:43.357612 [ERROR] fpm_unix_init_child(), line 168: setrlimit(RLIMIT_NOFILE) failed: Invalid argument (22)”

看错误日志 fpm_unix_init_main max 1024,应该是和linux系统设置最大文件数有关,比php-fastcgi,nginx设置的值小很多,导致错误,频繁关闭会不会也是这原因?想想很有可能,两台nginx和php-fpm配置都不尽相同的burst的vps,都会出现这问题,其他主机商的vps则没有。由此推断大概是burst 默认设置所有开通的vps的最大文件数太低了。

1. 查看系统最大文件数rlimit_nofile:

[root@xxx ~]# ulimit -n
1024

2.查看php-fpm和nginx设置:

[root@xxx ~]# cat /usr/local/php/etc/php-fpm.conf | grep rlimit
Set open file desc rlimit
<value name=”rlimit_files”>51200</value>
Set max core size rlimit
<value name=”rlimit_core”>0</value>

[root@xxx ~]# cat /usr/local/nginx/conf/nginx.conf | grep rlimit
worker_rlimit_nofile 51200;

3. 修改vps系统的rlimit_nofile:

vi /etc/security/limits.conf   末尾添加两行

* soft nofile 51200

* hard nofile 51200

4. 退出 exit,在ssh登录查看ulimit -n 为51200.

 


来说兩句