nginx连接数不够造成的Too many open files的问题

两个地方需要修改,首先修改linux系统的ulimit

 

1) ulimit (针对当前登录用户的限制,非针对单个进程) CentOS 默认ulimit -n 是1024,打开的文件数,nginx高并发时超过这个数字,就会报错。可以ulimit -n 65536,不过这只是当前session有效,退出登录后又没用了,要永久有效,需要修改/etc/security/limits.conf

* soft nofile 65536 
* hard nofile 65536 

星号代表全局, soft为软件,hard为硬件,nofile为这里指可打开文件数。把以上两行内容加到 limits.conf文件中即可。

另外,要使 limits.conf 文件配置生效,必须要确保 pam_limits.so 文件被加入到启动文件中。

查看 /etc/pam.d/login 文件中有: session required pam_limits.so 修改完重新登录就可以见到效果,可以通过 ulimit -n 查看。

 

2) nginx.conf

默认nginx采用一个worker_processes,一般有几个核,就设定几个worker。机器几个核,可以通过cat /proc/cpuinfo来查看。worker_connections * worker_processes = max client,所以worker_processes 也可以设的大一些,比如10240。

现在一般用作反向代理的时候,max clients = worker_connections * worker_process / 4。 另外还要设定一个worker_rlimit_nofile,这个是用来设定每个worker_process能打开的最大文件数,注意worker_connection不能超过这个数字。

posted @ 2013-03-15 00:14  我的白日梦  阅读(690)  评论(0编辑  收藏  举报