Tomcat进程意外退出的问题分析
2016-06-23 00:00
507 查看
摘要: Tomcat进程意外退出的问题分析
从上面日志来可以判断:
先通过排查代码,应用方和中间件团队都排查了
有了这个线索之后,银时同学立刻看了一下对方测试环境的脚本,简化后如下:
tomcat启动为后,当前shell进程并没有退出,而是挂住在tail进程,往终端输出日志内容。这种情况下,如果用户直接关闭ssh终端的窗口(用鼠标或快捷键),则java进程也会退出。而如果先
如果我们在test.sh里设置开启作业控制的话,就不会让java进程退出了: 脚本中加入 set -m
org.apache.coyote.AbstractProtocol pause Pausing ProtocolHandler org.apache.catalina.core.StandardService stopInternal Stopping service Catalina org.apache.coyote.AbstractProtocol stop Stopping ProtocolHandler org.apache.coyote.AbstractProtocol destroy Destroying ProtocolHandler
从上面日志来可以判断:
1) tomcat不是通过脚本正常关闭(viaport: 即通过8005端口发送shutdown指令)
因为正常关闭(viaport)的话会在 pause 之前有这样的一句warn日志:org.apache.catalina.core.StandardServer await A valid shutdown command was received via the shutdown port. Stopping the Server instance. 然后才是 pause -> stop -> destory
2) tomcat的shutdownhook被触发,执行了销毁逻辑
而这又有两种情况,一是应用代码里有地方用System.exit来退出jvm,二是系统发的信号(
kill -9除外,SIGKILL信号JVM不会有机会执行shutdownhook)
先通过排查代码,应用方和中间件团队都排查了
System.exit在这个应用中使用的可能。那就只剩下Signal的情况了;经过一番排查后,发现每次tomcat意外退出的时间与ssh会话结束的时间正好吻合。
有了这个线索之后,银时同学立刻看了一下对方测试环境的脚本,简化后如下:
$ cat test.sh #!/bin/bash cd /data/server/tomcat/bin/ ./catalina.sh start tail -f /data/server/tomcat/logs/catalina.out
tomcat启动为后,当前shell进程并没有退出,而是挂住在tail进程,往终端输出日志内容。这种情况下,如果用户直接关闭ssh终端的窗口(用鼠标或快捷键),则java进程也会退出。而如果先
ctrl-c终止test.sh进程,然后再关闭ssh终端的话,则java进程不会退出。
如果我们在test.sh里设置开启作业控制的话,就不会让java进程退出了: 脚本中加入 set -m
#!/bin/bash set -m cd /home/admin/tt/tomcat/bin/ ./catalina.sh start tail -f /home/admin/tt/tomcat/logs/catalina.out
相关文章推荐
- Tomcat配置远程调试端口
- Tomcat启动打印日志格式分析
- 如何自定义Tomcat Realm实现我们的用户认证需求
- Tomcat服务无法开启,点击start不一会就变成stopped
- 编译运行在Tomcat时报错org.apache.catalina.LifecycleException: Failed to start component
- Centos Linux系统下配置网站开发环境(jdk7+mysql5.6+tomcat)
- 在Windows下如何安装Tomcat服务器搭建
- 在myeclipse中如何修改Web Context-root,就是部署在Tomcat的webapps目录下的那个文件夹名字
- Maven 项目自动化打包部署(Jboss & Tomcat)
- Eclipse+Tomcat+MAVEN+SVN项目完整环境搭建
- 启动Tomcat闪退的问题
- Eclipse部署Maven web项目到tomcat服务器时,没有将lib下的jar复制过去的解决办法
- nginx+tomcat负载均衡
- TOMCAT 的 线程 和队列
- maven使用内嵌tomcat7
- Tomcat 调优及 JVM 参数优化
- Eclipse学习总结-(02-动态项目部署到到本地Tomcat
- tomcat安装APR本地库不兼容问题的解决 APR based Apache Tomcat Native library is installed
- Tomcat是如何启动及运行—对tomcat的源码解析(转载)
- Linux服务器安装jdk+tomcat