java.io.IOException:Too many openfiles及查看某个进程占用多少文件符

一:问题描述

异常中最关键的信息是“Toomany open flies”,这是一种常见的Linux系统错误,通常意味着文件描述符不足,它一般发生在创建线程、创建Socket、打开文件这些场景下。在Linux系统的默认设置下,这个文件描述符的个数不是很多。

二:问题描述

通过ulimit命令可以查看:

[root@nodel kafka 2.11 2.0.0]#  ulimit -n 
1024 
[root@nodel kafka 2.11-2.0.0]# ulimit -Sn 
1024 
[root@nodel kafka 2.11-2.0.0]# ulimit -Hn 
4096

ulimit 是在系统允许的情况下,提供对特定shell可利用的资源的控制。-H 和-S选项指定资源的硬限制和软限制。硬限制设定之后不能再添加,而软限制则可以增加到硬限制规定的值。如果-H和-S选项都没有指定,则软限制和硬限制同时设定。限制值可以是指定资源的数值或hard、soft,unlimited这些特殊值,其中hard代表当前硬限制,soft代表当前软件限制,unlimited代表不限制。如果不指定限制值,则打印指定资源的软限制值,除非指定了-H选项。硬限制可以在任何时候、任何进程中设置,但硬限制只能由超级用户设置。软限制是内核实际执行的限制,任何进程都可以将软限制设置为任意小于等于硬限制的值。

三:问题解决

对于一个高并发、高性能的应用来说,1024或4096的文件描述符限制未免太少,可以适当调大这个参数。比如使用 “ulimit -n 65535” 命令将上限提高到65535,这样足以应对大多数的应用情况,再高也完全没有必要了。

四:额外补充

查看某个进程(pid)下占用多少文件符:

> ls  /proc/{pid}/fd I wc -1
> 例如: ls  /proc/16534/fd I wc -1
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值