操作系统:Linux
应用系统:并发量较大的系统,业务应用需打开多个文件或socket链接,如web应用。
故障现象:当系统参数配置或应用程序参数配置过小时,可能会出现too many open files 的错误。
检查方法:
1、检查系统允许值
1.1)检查系统允许打开的最大文件句柄数,值应该不小于65536
[root@dwd~]#cat /proc/sys/fs/file-max
65536
1.2)检查系统当前打开的最大文件句柄数
[root@dwd~]#cat /proc/sys/fs/file-nr
896 0 65536
896为系统已分配值,65536为系统最大可分配值,系统已分配值应该远小于系统允许打开的最大文件句柄数
2、检查系统单进程允许值
2.1) 检查单进程允许打开的文件最大句柄数
[root@dwd~]#ulimit -a 或 ulimit -n
open files (-n) 10240
2.2)检查系统当前允许单进程打开文件最大句柄数
使用lsof(list open files)是一个列出当前系统打开文件的工具查看。
[root@dwd~]#lsof -n |awk'{print $2}'|sort|uniq -c |sort -nr|more
85 2555
56 2838
56 2000
30 2012
36 3025
第一列是"进程打开句柄数的值",第二列是"PID进程号"
第一列的值应该远小于"进程语序打开的文件最大句柄数"的值
3、检查应用系统允许的文件最大句柄数
如JBOSS
在run.conf中的MAX_FD为系统默认值,该属性是配置JBOSS能够使用文件描述符的最大数量,即ulimit -a 的进程允许最大值。
4、"进程允许打开文件句柄数"最大值修改办法
4.1)修改系统当前允许值,修改值应能满足业务要求。
[root@dwd~]#ulimit -n 10240
4.2)检查确认
[root@dwd~]#ulimit -n
10240
4.3)修改系统配置参数,以便重启后系统参数自动生效
/etc/security/limits.conf
* soft nofile 10240
* hard nofile 65536
4.4)修改系统当前值后,在合适的时间需重新启动JBOSS等应用服务器,应用方能生效
阅读(1012) | 评论(0) | 转发(0) |