文件句柄数

内核参数fs.file-max指定了系统范围内所有进程可打开的文件句柄的数量限制。
合理值计算方法:取决于内存,每1M内存可增加100个。默认情况下,不要将超过10%的内存用于文件。将文件句柄数设置太大的危害是,当大量的文件句柄都为sockets时,会占用大量的内存,这些内存都是不可交换的。要记得的是网络套接字连接符也是文件。对于百万级连接数的进程来说,要设置单个进程可打开的文件句柄数为百万个。
比如256G内存,应该配置的值为:256*0.1*1024*100=2621440
设置方式:

vi /etc/sysctl.conf
fs.file-max = 2621440
#生效
sysctl -p
#通过命令也可以直接更改sysctl.conf文件
sysctl -w fs.file-max=2621440


内核参数fs.nr_open指定了单个进程可打开的文件句柄的数量限制。nofile可设置的上限受fs.nr_open的限制,不可超过fs.nr_open的值。nr_open的默认值为1048576`1024*1024`,这个值一般不用更改,对于百万级别的单进程最大文件句柄打开数应该也够,nofile基本不会超过这个值。

内核参数fs.file-nr可以查看系统中当前打开的文件句柄的数量。 它里面包括3个数字: 第一个表示已经分配了的文件描述符数量,第二个表示空闲的文件句柄数量(待重新分配的), 第三个表示能够打开文件句柄的最大值(与fs.file-max一致)。

单个进程实际能够打开的最大文件句柄数量为`ulimit -n`,默认为1024个。

针对单个进程实际可打开的最大文件数的限制,在/etc/security/limits.conf中对应nofile,需重新登录生效。

vi /etc/security/limits.conf
*        hard    nofile   100000
*        soft    nofile   100000


用通配符`*`表示所有用户,有些系统中可能不支持通配符`*`,此时应该为具体的用户进行配置。当超过soft软限制时,会产生warning告警,但不可超过hard硬限制。
此外,要注意的是,pam_limits模块会先读/etc/security/limits.conf,如果/etc/security/limits.d/目录下还有配置文件的话,也读进来,一起分析。这就意味着/etc/security/limits.d/目录下的配置会覆盖/etc/security/limits.conf中的配置,这就是在limits.conf中配置了限制后,发现不生效的原因,所以如果limits.d目录下有配置文件的话,建议将其中的相关配置注销掉。
此外,不可以将nofile设置为unlimited,因为/etc/pam.d/system-auth中有pam_limits.so的限制,要求/etc/security/limits.conf中定义的文件句柄数限制不可以超过nr_open,否则拒绝SSH登录。


要注意以下几点:
1. 对于通过ssh tty登录后,手工启动的程序而言,受当时该登录用户的`ulimit -n`的值所限制。
2. 在limits.conf中配置的限制,对当前正在运行的程序无效。
3. /etc/security/limits.conf 是 pam_limits.so 的配置文件,一般只有在“login”的时候才执行。
4. 当遇到系统重启的时候,在limits.conf中做的限制对程序无效。

将临时配置命令写入到rc.local文件中:
 

vi /etc/rc.local
ulimit -SHn 100000

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值