linux文件句柄,Linux文件句柄配置

Linux系统中,对于系统和用户在同一时间打开的文件数目有限制,又因为在linux系统中,“一切都是文件”,如果系统和用户的文件数目达到最大限制,有可能造成系统服务不能正常使用。而CentOS系统默认适配低端平台,默认数值只有1024,在实际的生产(线上)环境中,这个数值远远不够,需要对其做出修改。

以下是常用的修改步骤:

1检查当前用户能够打开的最大文件数目

98511eaf49de455ac968b5c861cd6578.png

默认数值是1024

如果仅仅是针对当前的shell做修改,可以直接用ulimit命令做修改,当前修改到1024000

82c6406c138a4a72b784b31870f8371f.png

但修改仅仅对当前shell有效,重新打开一个Shell,又回到默认数值1024

972473a29e2dc336d2ebcc5ce3612a1b.png

因此,有必要修改系统相关配置文件,达到“永久修改”的效果。

2检测当前系统能够打开的最大文件数目

1fce6eef12ce38154e8fd52673eba00b.png

当前CentOS系统能够打开的最大文件数目是1609603,这个数值(默认数值)已经足够了,如果不够,用vi命令修改数值即可。

3修改用户能够同时打开的最大文件数目

如果想要“永久修改”,需要用VI命令对系统的配置文件(/etc/security/limits.conf)进行修改,插入* - nofile 1024000,其中 *代表所有用户,-代表包括软连接和硬链接,nofile表示修改的是用户限制文件数目,1024000表示的是具体数值。

02638061616403b1089ed72b11c51698.png

重新打开一个shell,则用户打开文件的限制数目已经变成1024000

6fec2efe425d555e14914a65dd907990.png

在实际的运维工程中,笔者发现,有些机器尽管在/etc/security/limits.conf中作出了相应的修改,但用ulimit –n却检测失效,那么有可能是SSH服务器没有配置为使用PAM (UsePAM yes)而导致。

简单来说,/etc/security/limits.conf是给pam_limits模块使用的配置文件,而对于SSH session来说,要使limits.conf生效,则必须确保SSH服务器的配置中UsePAM的选项是有效的。

vim etc/ssh/sshd_config,确认以下的行有效。

2871555cb904d4e335d988d318b62079.png

4在实际的生产环境中,用命令检测当前系统运行的情况。

检测当前系统实际打开的文件数目。

4689bdc2b83cc11cfab9d3fc93e6ed0d.png

1248表示系统当前实时打开的文件数目,0表示打开未却又未分配给实际进程的文件数目,1609894表示系统在同一时间能够打开的最大文件数目。

检测当前Java进程实际打开的文件数目

首先查找当前java进程ID为15722

bfa17a07312c5d8c3c1169837fd77772.png

然后根据ID查找java当前实时打开的文件

61164d8cf5cee35702578834ac3c402b.png

其中COMMAND:进程名称,PID:进程的id,USER:进程的使用者,FD:文件的描述符,TYPE:文件类型,DEVICE:指定磁盘的名称,SIZE:文件的大小,NODE:索引节点(文件在磁盘上的标识),NAME:打开文件的确切名称

如果仅仅只是想查找java进程打开的文件数目,直接用wc –l命令查找,当前java进程打开的文件数目为760

84c31485e822fed458cb19f661ed5bcd.png

查找所有进程同时打开的文件数目,可以用lsof和wc命令直接来统计,此时,系统被进程同时打开的文件数目是2454

2ea916b78281325592c650f2ea7ac650.png

一个文件可以被多个进程打开,因此一般而言,进程打开的文件数目要比实际打开的文件数目多一些。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值