开启左侧

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

[复制链接]
发表于 2014-4-6 23:51:22 | 显示全部楼层 |阅读模式
我们的web服务器是nginx,在跑php时,使用fpm出现了php-fastcgi fpm 和nginx 自动关闭的情况。查看最近的php-fpm错误日志 /usr/local/php/logs/php-fpm.log 发现以下报错信息:

  1. Oct 29 10:55:05.492413 [NOTICE] fpm_unix_init_main(), line 284: getrlimit(nofile): max:1024, cur:1024  
  2. Oct 29 10:55:05.504248 [NOTICE] fpm_event_init_main(), line 88: libevent: using epoll  
  3. Oct 29 10:55:05.512693 [NOTICE] fpm_init(), line 52: fpm is running, pid 21732  
  4. Oct 29 10:55:05.513923 [NOTICE] fpm_children_make(), line 352: child 21735 (pool default) started  
  5.   
  6. 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.

最终问题搞定;


平度网:www.pingdu.co 平度论坛:bbs.pingdu.co
您需要登录后才可以回帖 登录 | 会员注册

本版积分规则

 
QQ在线咨询
售前咨询热线
0532-88371356
售后服务微信
pingduwangzhan
快速回复 返回顶部 返回列表