突然频繁出现大量的 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//limits

得到

Max open files 1024 4096 files

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

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

[Service]
Type=simple
LimitNOFILE=
LimitNPROC=

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

vi /etc/supervisord.conf

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

minfds=                  ; (min. avail startup file descriptors;default )
minprocs= ; (min. avail process descriptors;default )

大量的Close_wait 发现的 too many open file 错的更多相关文章

  1. TagHelper的一些个人学习体会(发现了微软官方文档的一个错误)

    最近一直在学习.net core 上周六开始学习Taghelper的自定义,准备周日写个博客和大家分享一下学习体会,无奈周日去考科四了,回来之后就感冒了,现在还没好.可是我发现了微软官方文档的一个错误 ...

  2. 关于postgres数据库部署之后,发现不能被外机连接解决办法

    数据库 部署完毕之后,用其他机器的navcat连接发现不能连接,如下报错信息 于是在数据库服务器上查询是否启动正常,端口是否正常,发现都没有问题,由于之前也遇到了mysql部署之后,不能被其他机器访问 ...

  3. AWR发现TOP Event log file sequential read

    对客户DB进行巡检,发现TOP EVENT是LOG FILE Sequential read 等待事件说明 https://www.xuebuyuan.com/zh-hant/1743045.html ...

  4. windows下Jmeter压测端口占用问题(亲测有效)

    windows下Jmeter压测端口占用问题 1 报错信息描述 压测的初期,在设置了 150qps/s 的并发数下压测几分钟后 Jmeter 就出现了如下报错. JAVA.NET.BINDEXCEPT ...

  5. windows下Jmeter压测端口占用问题

    https://blog.csdn.net/weixin_43757847/article/details/88188091 1 前情提要人脸识别项目中,云平台新增了人脸识别的校验接口.考虑到存在大量 ...

  6. 首个threejs项目-前端填坑指南

    第一次使用threejs到实际项目中,开始的时候心情有点小激动,毕竟是第一次嘛,然而做着做着就感受到这玩意水好深,满满的都是坑,填都填不过来.经过老板20天惨无人道的摧残,终于小有成就. 因为第一次搞 ...

  7. React单元测试——十八般兵器齐上阵,环境构建篇

    一个完整.优秀的项目往往离不开单元测试的环节,就 github 上的主流前端项目而言,基本都有相应的单元测试模块. 就 React 的项目来说,一套完整的单元测试能在在后续迭代更新中回归错误时候给与警 ...

  8. 关于CommonJS规范摘录

    CommonJS规范 1. 概述 为什么要用commonjs 模块化的目的: 减少循环依赖 减少耦合,提高了模块的复用率 有利于多人开发,提高开发的效率. 规避命名的冲突.全局变量的污染.有利于代码的 ...

  9. 前端学HTTP之网络基础

    × 目录 [1]网络 [2]OSI [3]TCP/IP 前面的话 HTTP协议对于前端工程师是非常重要的.我们在浏览网站时,访问的每一个WEB页面都需要使用HTTP协议实现.如果不了解HTTP协议,就 ...

随机推荐

  1. 【BZOJ3944】Sum

    题面 Description Input 一共T+1行 第1行为数据组数T(T<=10) 第2~T+1行每行一个非负整数N,代表一组询问 Output 一共T行,每行两个用空格分隔的数ans1, ...

  2. 提高Modelsim仿真速度的方法(1) -- force

    假如主驱动时钟频率很高,因为要一个周期输出,仿真时间过长,仿真速度慢是自然. 但是仿真中,并不是每个驱动周期都是必要的,这时可以使用force命令把想要的信号提前制造出来. 事实上,对于使用到PLL的 ...

  3. 数论GCD——cf1055C

    被一道数论题卡了半天 网上的题解说只要匹配l或者r就行,想了下还真是.. 能让r1和r2对其就让他们对其,不能对其就讨论一下两种情况就可以了 #include <bits/stdc++.h> ...

  4. memcached 技术支持

    1. Install sudo apt-get install memcached 2.启动和停止 启动: service memcached start 停止: service memcached ...

  5. 服务器迁移部署OmsWeb

    绑定 基本设置 高级设置

  6. MyEclispe点击add deploment 无反应的处理,无法添加项目到Tomcat

    比如你的工作空间为 E:\workspace-project 找到以下路径: E:\workspace-project\.metadata\.plugins\org.eclipse.core.runt ...

  7. 11-3-while

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  8. 关于判断是安卓还是ios环境跳转下载页

    H5项目中判断是安卓还是iOS手机就跳转到不同的下载页,项目如下https://github.com/JserJser/dailyPush/tree/master/daily6/H5 这个项目里面我比 ...

  9. 跟我一起在ubuntu中安装docker

    卸载旧版本 $ sudo apt-get remove docker docker-engine docker.io 查看ubuntu版本 设置安装源 通过如下步骤,设置安装源仓库,这里我们使用阿里源 ...

  10. leetcode 238 & leetcode 152 & leetcode 228

    lc238 Product of Array Except Self 遍历两次数组 用一个res[] 记录答案 1) 第一次,从左往右遍历 res[i] 记录0~i-1的乘积 2) 第二次,从右往左遍 ...