ps -ef|grep tomcat 查看pid
ls /proc/进程pid/fd/ | wc -l 查看pid当前打开的文件数
cat /proc/进程pid/limits 看开pid当前打开的文件数上限
ulimit -a 系统默认最大打开数量
二、解决方法
1、增大允许打开的文件数——命令方式
ulimit -n 2048
这样就可以把当前用户的最大允许打开文件数量设置为2048了,但这种设置方法在重启后会还原为默认值。
ulimit -n命令非root用户只能设置到4096。
想要设置到更大需要sudo权限或者root用户。
2、增大允许打开的文件数——修改系统配置文件
vim /etc/security/limits.conf
#在最后加入
* soft nofile 4096
* hard nofile 4096
或者只加入
* - nofile 8192
最前的 * 表示所有用户,可根据需要设置某一用户,例如
roy soft nofile 8192
roy hard nofile 8192
注意”nofile”项有两个可能的限制措施。就是项下的hard和soft。 要使修改过得最大打开文件数生效,必须对这两种限制进行设定。 如果使用”-“字符设定, 则hard和soft设定会同时被设定。
注:/etc/security/limits.conf限制实际取决于 /etc/security/limits.d/20-nproc.conf(文件名不一定是这个,需到目录下去看)的配置,也就是说哪怕/etc/security/limits.conf设置最大打开数是65535,
而/etc/security/limits.d/20-nproc.conf里配的是4096,那最终结果还是用户最大只能打开4096个文件句柄
3、检查程序问题
lsof -p 进程id > openfiles.log命令,获得当前占用句柄的全部详情进行分析