linux句柄数过高排查及调整

  做linux系统上的后端代码开发,偶尔会碰到后台报错:too many file open  XXXX  ,紧跟着是socket open timeout  。这种情况大部分是因为linux 文件句柄数满掉引起的。linux操作系统默认的句柄数为1024,windows默认的句柄数为6万。所以linux操作系统更容易出现句柄数不够用的情况。但是1024的句柄数在大部分情况下也是够用的,除非这台linux是类似:日志服务器、监控服务器等提供服务,并且被大量IP链接的才需要扩大句柄数(改linux系统参数+重启linux)。我们先通过如下的命令来查询当前总文件句柄数和系统设置的文件句柄数:

1.查看系统设置的文件句柄数

more /proc/sys/fs/file-max

2.查看当前打开句柄总数

lsof|awk '{print $2}'|wc -l

3.根据打开文件句柄的数量降序排列,找出哪个进程占用的句柄数最高

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

image.png

4.根据获取的进程ID查看进程的详情

ps -ef|grep 12281 (其中12281换为上一个步骤查询到的pid)

image.png

如果是java系统的,我们还可以使用jdk自带的线程导出工具,把全部的线程导出:

jstack -l 12281 >> /usr/local/Client/log20180116.log     (其中12281换为实际的pid)

5.修改linux单进程最大文件连接数

修改linux系统参数。vi /etc/security/limits.conf 添加
*  soft  nofile  65536
*  hard  nofile  65536
修改以后保存,注销当前用户,重新登录,执行ulimit -a ,ok ,参数生效了:

下面还记录一些常用的统计打开句柄数的方法:

统计各进程打开句柄数:lsof -n|awk '{print $2}'|sort|uniq -c|sort -nr

统计各用户打开句柄数:lsof -n|awk '{print $3}'|sort|uniq -c|sort -nr

统计各命令打开句柄数:lsof -n|awk '{print $1}'|sort|uniq -c|sort -nr

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值