Loading...

    AD: 猛买 | 快递查询 | Jobsdigg | 很棒的男装店

nginx出现”too many open files”的解决

可任意转载,但必须在醒目位置以超链接形式标明文章原始出处和作者信息
原文地址:http://www.blogkid.net/archives/2531.html

中午我的Linode服务器又犯了老毛病,所有网站都不能访问。是因为服务器的nginx不停出错,输出的错误日志(error.log)塞满了整个分区。删除掉错误日志文件并重启nginx以后可以恢复正常。

我查看了一下错误日志的内容,发现全部是“Too many open files while accepting new connection on 0.0.0.0:80”。用Too many open files搜了一下,找到了一个解决方案

先查了一下文件系统最大可打开文件数:

root@li55-4:~# cat /proc/sys/fs/file-max
70133

于是用ulimit修改了一下:

root@li55-4:~# ulimit -n 10240

这下把最大打开文件数从1024提高到了10240,应该够用了吧。

最后把”ulimit -n 10240″这一行增加到/etc/rc.local中,以保证每次系统启动都能生效。

这样做是否有效,还有待后续观察。

经过实测,在rc.local中加入这一行是没有效果的,使用ulimit -n 10240进行修改也仅能影响到当前的shell。对这个问题,老王做过的探索,请移步此处查看。修改后,需要重启一次方可生效。

感谢智勇发现问题。

16 Responses to “nginx出现”too many open files”的解决”


  1. 把”ulimit -n 10240″这一行增加到/etc/rc.local中,以保证每次系统启动都能生效。
    我的VPS重启就是不生效!

  2. 把 Keep-Alive的时间缩短一些吧,这样也可以不少的服务器资源,不失为一个解决办法。

  3. @Cat
    这个命令应该是只影响当前的bash。我也不知道这样是否能解决此问题,还需要再等一段看看。
    你也遇到一样问题了?

  4. 嗯,是同样问题,我之前是解决了的,但后来忘记了…
    要修改linux两个文件~

  5. @Cat
    是不是修改了一个叫做limits.conf的文件?

  6. 我之前是通过修改 commEnv.sh 的脚本弄好的。

  7. ulimit的问题我以前研究过,可以参考:http://hi.baidu.com/thinkinginlamp/blog/item/e8605c6046cdbed78db10ddb.html

  8. @老王
    多谢,今天早上问题重现了,看来我这个办法没能起作用。

  9. 真的被你换成.net了
    嗯,偶的看了一下 是50578 现阶段应该够用了

  10. @showform
    只操作了20分钟就ok了,google还提供了change of address的功能,可以方便实现整站域名的切换。百度似乎没有。

    这个问题其实我最终也没能搞定,现在设置了一下每天午夜重启nginx,虽然山寨,但有奇效

  11. ulimit -HSn 65536加到/etc/profile最后
    source /etc/profile就可以了

  12. @hao32
    这样做只是解决当前会话吧。

  13. 每个会话都解决了, 因为任意一个会话开始都会去读profile

  14. @hao32
    有道理,重启一下确实如此

  15. 15Chan
  16. @Chan
    谢谢

Leave a Reply