再用命令ls /proc/20861/fd/ | wc -l 查看当前tomcat进程打开文件数,果然已经4095个,这种问题解决办法就是增大文件打开数即可,简单的很。
但如果能这么容易的解决了,我也就不用再写这篇博客了。因为我查了下当前用户所能打开的文件数发现最大能打开的文件数是65535,远远大于4096。
而/etc/security/limits.conf里也都设置的是65535
一查看进程详细信息发现,原来该进程最大只能打开4096个文件。
后又思索了很久,查了很久的百度,依然没有头绪,只好写了个脚本监控日志,发现too many open files信息后就重启tomcat(我们冗余的,session也做了共享,重启不影响业务的)。
第二天过来再解决这个问题时,冥冥之中感觉是systemctl脚本问题,但仔仔细细看了脚本并没有什么问题,于是就瞎猫碰上死耗子的心态去看看其他systemctl脚本怎么写,结果这一看,不得了啊,居然把问题给解决了。
当前是看的是docket启动脚本,docket是yum安装的,那脚本里有如下这么俩句话,凭我老到经验一下就看出这是限制进程打开数的,如果我把这俩句加到tomcat启动脚本里,再重启应用,看进程限制,发现最大打开文件数终于改成功了。
写这篇博客,是希望帮助那些也遇到这个问题的人,免得像我一样百思不得其解,耽误时间。如果帮到你了,清评论一下,一是我想看看有多少人遇到这个问题了,为什么我当初去百度时没有一篇文章指明进程限制这个问题,二是有评论才有动力写下一个技术分享嘛,谢谢~
LimitNOFILE=1048576
LimitNPROC=1048576
原文:https://www.cnblogs.com/abkn/p/9267722.html