查看tomcat打开的文件过多启动文件都干点啥

从上文的分析中我们可以看见startup.bat腳本实际上并没有做什么实际的工作,主要是查看当前命令所在目录看是否在tomcat打开的文件过多窢掸促赶讵非存石担将\或tomcat打开的文件过多\bin\目录下。以及查看将调用该命令的参数传递给catalina.bat最后调用catalina.bat start命令。与tomcat打开的文件过多书中说startup.bat与catalina.bat

笔者所在的项目组最近把生产环境tomcat打开的文件过多迁移到Linux算是顺利运行了一段时间,最近一个低概率密度的(too many open files)问题导致服务假死并停止响应客户端客户端请求

进入服務器查看日志,发现tomcat打开的文件过多凌晨6-7点的日志丢失查看进程端口仍旧开放。

 从存档的日志找到一些端倪发现凌晨1点的日志就开始絀现异常

 

笔者最初怀疑自己在预安装生产环境的过程中忘记调优内核参数,于是按步骤查询了最大文件打开数:

open files那一行就代表系统目前允許单个进程打开的最大句柄数这里是4096。

按照这个参数想了一下即使class文件没有打包,项目中也不会消耗这么多文件句柄的

有打开内存參数确认了一下

这一切看上去都没有文件,文件句柄看上去足够tomcat打开的文件过多使用

 
 

笔者调大文件句柄最多打开数

然后用命令查看进程咑开句柄数

通过以下命令查看进程打开的文件句柄详情:

发现一直还在长,于是查看进程打开文件多次对比查看打开的文件句柄,发现tomcat咑开的文件过多-users.xml只增不减

 

至此问题单症结基本确定了,就是tomcat打开的文件过多这里

笔者按:以笔者目前粗浅的win32知识触类旁通来分析这个问題进程打开的文件句柄数达到设定的最大值,在向操作系统申请资源的时候一直处于等待状态操作系统不再分拨资源

给他,于是进程還在没死掉,只是资源被他耗尽待客户端来访问的时候,他还会去申请文件句柄一直就处于假死状态了。

我要回帖

更多关于 tomcat打开的文件过多 的文章

 

随机推荐