linux服务器open too many files异常的排查

线上遇到很多打印 open too many files 异常
1:首先看下是否是系统限制导致的
ulimit -a
open files 查看linux系统允许单进程打开的最大句柄数

2: 如果系统限制的打开句柄过低,可以通过如下设置:
vim /etc/security/limits.conf
#在最后加入

  • soft nofile 65535
  • hard nofile 65535

3:统计进程打开的句柄数:
通过这个可以知道是哪个进程导致的
lsof -p 进程id|wc -l

4: 查看进程打开的每一个句柄都做了什么

strace -tt -T -v -f -e trace=file -o /hskj/tmp/strace.log -s 1024 -p 进程id

-tt 在每行输出的前面,显示毫秒级别的时间
-T 显示每次系统调用所花费的时间
-v 对于某些相关调用,把完整的环境变量,文件stat结构等打出来。
-f 跟踪目标进程,以及目标进程创建的所有子进程
-e 控制要跟踪的事件和跟踪行为,比如指定要跟踪的系统调用名称
-o 把strace的输出单独写到指定的文件
-s 当系统调用的某个参数是字符串时,最多输出指定长度的内容,默认是32个字节
-p 指定要跟踪的进程pid, 要同时跟踪多个pid, 重复多次-p选项即可。

5: 查看进程都打开了哪些句柄,以及哪些句柄一直不消失
less /proc/14195/fd

6:通过一直不消失的句柄号,再结合strace的文件,查看这个句柄是什么操作,可以通过观察对应的端口号,来判断是什么代码。我们这个问题的代码是8010,对应的用来接收http协议状态报告和上行的端口,定位到具体的jetty,然后查看对应的参数配置,发现了之前解决过jetty的一个bug,改完参数后,重启发送端,句柄恢复正常。
在这里插入图片描述

Jetty使用需要注意的点:

在这里插入图片描述

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值