-
背景:linux系统里,最大打开的文件句柄数(也即是打开文件数最大限制值),按约定的单个进程能够打开的最大文件句柄数量,默认大小为:1024。
-
句柄限制类型
- 系统级最大限制(内核级别)
cat /proc/sys/fs/file-max
- 用户级最大限制
ulimit -n
备注:默认值为:1024,例如常见的阿里云、华为云类型的云主机一般值为:65535 。
- 修改最大限制值
用户级的临时修改方法:ulimit -SHn 65535
注意:系统重启后失效!
用户级的永久修改方法:
vim /etc/security/limits.conf
修改配置文件/etc/security/limits.conf,加入:
- soft nofile 65535
- hard nofile 65535
echo "* soft nofile 65535" >> /etc/security/limits.conf
echo "* hard nofile 65535" >> /etc/security/limits.conf
提示:* 表示所用的用户,但有的系统不认, 需要具体的用户名, 比如:
root soft nofile 65535
root hard nofile 65535
重新登录验证,或reboot后验证。
- 系统级的修改方式
除了以上对一个进程打开的文件句柄数量的限制,此外还需要设置系统的总限制才合理。
例如:我们把进程打开的文件句柄数据设置为:1024,但是系统的总限制为:600,此时所有进程最多能打开文件句柄数量为:600。此外,我们还需要对系统的总限制值进行修改。
系统级的临时修改方式:
echo 655350 > /proc/sys/fs/file-max
系统级的永久修改方式:
添加: fs.file-max=655350
vi /etc/sysctl.conf
重启服务器后生效。
查看系统级文件句柄值:
sysctl -p