1、获取当前系统打开的句柄数
cat /proc/sys/fs/file-nr
1728 0 1620283
其中分别表示已分配文件句柄的数目 / 分配了但没有使用的句柄数目 / 文件句柄的最大数目
2、打印出当前进程打开了多少句柄数
lsof -n|awk '{print $2}'|sort|uniq -c|sort -nr|more
3、硬性限制与软性限制的区别
ulimit -HSn 4096 设置当前会话
H指定了硬性大小,S指定了软性大小,n表示设定单个进程最大的打开文件句柄数量
软性限制不会超过硬性限制,达到软性限制会报警,超过硬性限制会报错
4、查看当前系统句柄最大限制
cat /proc/sys/fs/file-max
默认值是根据内存大小,系统自动设置的,一般为内存大小(KB)的10%
grep -r MemTotal /proc/meminfo | awk ‘{printf("%d",$2/10)}‘
5、修改当前系统最大句柄限制
# vim /etc/sysctl.conf
fs.file-max = 2000000
sysctl -p 立即生效
6、修改用户句柄限制/etc/security/limits.conf
* soft nofile 65536
* hard nofile 65536
总结:
1、/proc/sys/fs/file-max限制不了/etc/security/limits.conf
2、只有root用户才有权限修改/etc/security/limits.conf
3、对于非root用户, /etc/security/limits.conf会限制ulimit -n,但是限制不了root用户
4、当前环境的用户所有进程能打开的最大文件数量由ulimit -n决定