记Too many open files错误

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命令,获得当前占用句柄的全部详情进行分析

posted @ 2019-11-26 10:02  nike_ha  阅读(137)  评论(0编辑  收藏  举报