发布于 2016-03-12 07:37:03 | 225 次阅读 | 评论: 1 | 来源: PHPERZ
这里有新鲜出炉的Nginx开发从入门到精通,程序狗速度看过来!
Nginx WEB服务器
Nginx 是一个高性能的 HTTP 和 反向代理 服务器,也是一个 IMAP/POP3/SMTP 代理服务器。 Nginx 是由 Igor Sysoev 为俄罗斯访问量第二的 Rambler.ru 站点开发的,第一个公开版本0.1.0发布于2004年10月4日。其将源代码以类BSD许可证的形式发布,因它的稳定性、丰富的功能集、示例配置文件和低系统资源的消耗而闻名。
如果nginx的error.log出现大量的Too many open files,说明文件句柄不够用了,这时候我们需要加大系统的文件句柄数和nginx的允许最大的连接数。
默认情况下linux文 件系统最大可打开文件数为1024,对于一个应用于生产环境下的服务器来说,这个设置太下,例如在用nginx做web服务器,当并发达到一定数量时,可 以看到error.log里出现大量的“Nginx accept() failed (24: Too many open files)” 错误。解决这个问题的办法有两种:
方法一:使用ulimit -n 655350 把打开文件上限设置为655350,同时还需要修改nginx的配置文件,把worker_rlimit_nofile 值设置为一样。
1、更改系统文件句柄
vi /etc/security/limits.conf
增加以下内容:
root soft nofile 10240
root hard nofile 10240
nobody soft nofile 10240
nobody hard nofile 10240
通常我们只需要为root用户和nginx运行用户nobody增加文件句柄数,如果你需要为每个用户都增加该值,则可以加入以下内容:
* soft nofile 10240
* hard nofile 10240
注意:通过ulimit修改打开文件上限只会影响当前shell环境,所以这是一个临时解决方法,终极解决方法使用方法二。
方法二:在/etc/security/limits.conf文件中添加如下信息:
* soft nofile 655360
* hard nofile 655360
2、更改nginx.conf参数
vi /etc/nginx/nginx.conf
找到worker_rlimit_nofile和worker_connections参数,将值改为:
worker_rlimit_nofile 10240;
worker_connections 10240;
3、重新启动nginx
nginx -s reload
这样新的允许最大连接数就生效了。
4、检查error.log,看看是否还有Too many open files信息。如果仍然有大量该错误产生,则按照以上步骤继续加大文件句柄数。
注意:这个方法修改后必须重启机器才能使之生效。