nginx报错打开文件数过多

###一、问题

nginx连接数暴涨,查看error.log文件,发现很多

failed (24: Too many open files)

###二、原因

Linux是限制系统/应用/用户打开文件的数量的,当应用已经打开了上限数量的文件,再有打开新的文件的请求,之前打开的文件又没有关闭,就会报错,请求失败。

查看当前所有的打开文件数和某应用的打开文件数

lsof |wc -l
lsof -ap [PID]|wc -l

###三、解决方法

1、 修改系统打开文件的数量上限

打开文件

vim /etc/sysctl.conf

修改或增加如下配置,并保存 (关于值的设置,一般是,256个文件/4M内存,如果是16G内存,161024/4256=1,048,576 具体可参考:http://www.tldp.org/LDP/solrhe/Securing-Optimizing-Linux-RH-Edition-v1.3/chap6sec72.html)

fs.file-max = 1048576

使配置生效

sysctl -p

2、 修改nginx配置

修改worker_rlimit_nofile参数 http://nginx.org/en/docs/ngx_core_module.html#worker_rlimit_nofile

Changes the limit on the maximum number of open files (RLIMIT_NOFILE) for worker processes. Used to increase the limit without restarting the main process.
修改工作进程打开文件的最大数量限制。无需重启主进程,即可提高限制数。

这里我设置为worker_connections值的10倍,假定每个连接可以打开十个文件吧,不知对否。

重启nginx即可

nginx -s reload

转载于:https://my.oschina.net/ijustdoit/blog/637633

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值