访问量大,Nginx频繁出现500错误的解决方案

有一台服务器某天因为促销活动导致访问量激增,频繁报“500 Internal Server Error”错误。我查了一下nginx的错误日志(apt-get方式安装的nginx的错误日志在/var/log/nginx/error.log),发现了大量的“[alert] xxxxx#0: accept() failed (24: Too many open files)”

我上网查了一下,说这是超过了最大打开文件数的限制。

解决方法是:

1 打开/etc/security/limits.conf文件,加上两句

* soft nofile 65535
* hard nofile 65535

2 打开/etc/nginx/nginx.conf
在worker_processes的下面增加一行
worker_rlimit_nofile 65535;

3 重新启动nginx,重新载入设置
kill -9 `ps -ef | grep php | grep -v grep | awk '{print $2}'`
/usr/bin/spawn-fcgi -a 127.0.0.1 -p 9000 -C 100 -u www-data -f /usr/bin/php-cgi
killall -HUP nginx

重启后再看nginx的错误日志,也没有发现500报错的情况了。

 评论
  这个配置只能说明你的服务器在nginx启动之前没有配置好。
回复:嗯,谢谢指教,我以后注意改正。

  ulimit 命令
 发表评论
姓   名: