码迷,mamicode.com
首页 > 其他好文 > 详细

大量的Close_wait 发现的 too many open file 错

时间:2018-05-23 02:18:20      阅读:198      评论:0      收藏:0      [点我收藏+]

标签:pen   RoCE   排序   rip   估计   查询   file   进程   查看   

突然频繁出现大量的 Close_wait,查看程序日志,发现 connection 在 accept 时报错,Too many open file。 估计程序里有这个漏洞,当 accept 时报错,没有将 connect 关闭。 这问题倒时再排查。为什么会说 too many 呢?

文件数可以从三个维度限制分别为操作系统限制,用户态限制,以及进程限制,对于这三个维度选取最小值生效.

查看系统所有级进程打开的文件数倒排序,发现最大进程占用也就 7000 多个

lsof -n|awk {print $2}|sort|uniq -c|sort -nr|more

然后获取系统级文件数限制

cat /etc/sysctl.conf

得到

fs.file-max = 1000000

 

查询用户级文件数限制

cat /etc/security/limits.conf

得到

* soft nofile 655350

* hard nofile 655350

 

查进程的文件数限制(9928为进程id)

cat /proc/9928/limits

得到

Max open files 1024 4096 files

如上可以发现, 虽然系统及用户的文件数调大了,但是程序的仍然是一个很低的值, 这里进程的文件数一般情况下是默认继承用户级的值的,而这里却没有继承,想起该进程有 supervisor 管理。

如果是启动的服务,则可以加入 LimitNOFILE:

[Service]
Type=simple
LimitNOFILE=40960
LimitNPROC=40960

如果是用supervisor 管理,则需要对父进程 supervisor 放开文件数:

vi /etc/supervisord.conf

修改 minfds:  默认是 1024, 所以其开启的进程也变成了 1024

minfds=51200                  ; (min. avail startup file descriptors;default 1024)
minprocs=20000                 ; (min. avail process descriptors;default 200)

 

大量的Close_wait 发现的 too many open file 错

标签:pen   RoCE   排序   rip   估计   查询   file   进程   查看   

原文地址:https://www.cnblogs.com/zhenfei/p/9074937.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!