急求帮助,centOS下tomcat的java进程无故终止

求助!

目前环境centOS6.6+Nginx1.8.0+tomcat7.0.42+mysql5.6.24

另外还装了安全狗和clamd杀毒软件。

碰到的问题是tomcat的java进程隔几天会无故终止。tomcat的catalina日志里没有
tomcat停止的日志。操作系统日志/var/adm/messages里也没有tomcat的java进程停止的日志。 tomcat的home目录下也没有找到java虚拟机崩溃的日志。
打开进程日志,看到tomcat的java进程收到终止信号停止,java进程有X标志。

cat root __ 0.00 secs Thu Jul 30 09:48
sh root __ 0.00 secs Thu Jul 30 09:48
egrep root __ 0.00 secs Thu Jul 30 09:48
cat root __ 0.00 secs Thu Jul 30 09:48
sh root __ 0.00 secs Thu Jul 30 09:48
awk root __ 0.00 secs Thu Jul 30 09:48
head root __ 0.00 secs Thu Jul 30 09:48
cat root __ 0.00 secs Thu Jul 30 09:48

java S X root __ 2728.72 secs Wed Jul 29 10:38

du                      root     __         0.00 secs Thu Jul 30 09:48 
du                      root     __         0.00 secs Thu Jul 30 09:48 
du                      root     __         0.00 secs Thu Jul 30 09:48 
du                      root     __         0.00 secs Thu Jul 30 09:48 
du                      root     __         0.00 secs Thu Jul 30 09:48 
du                      root     __         0.00 secs Thu Jul 30 09:48 
du                      root     __         0.00 secs Thu Jul 30 09:48 
du                      root     __         0.00 secs Thu Jul 30 09:48 
du                      root     __         0.00 secs Thu Jul 30 09:48 
du                      root     __         0.00 secs Thu Jul 30 09:48 
du                      root     __         0.00 secs Thu Jul 30 09:48 
du                      root     __         0.00 secs Thu Jul 30 09:48 
du                      root     __         0.00 secs Thu Jul 30 09:48 
du                      root     __         0.00 secs Thu Jul 30 09:48 
du                      root     __         0.00 secs Thu Jul 30 09:48 
du                      root     __         0.00 secs Thu Jul 30 09:48 
du                      root     __         0.00 secs Thu Jul 30 09:48 
sh                      root     __         0.00 secs Thu Jul 30 09:48 
awk                     root     __         0.00 secs Thu Jul 30 09:48 
head                    root     __         0.00 secs Thu Jul 30 09:48 
cat                     root     __         0.00 secs Thu Jul 30 09:48 
sh                      root     __         0.00 secs Thu Jul 30 09:48 
awk                     root     __         0.00 secs Thu Jul 30 09:48 
head                    root     __         0.00 secs Thu Jul 30 09:48 
cat                     root     __         0.00 secs Thu Jul 30 09:48 
sh                      root     __         0.00 secs Thu Jul 30 09:48 
grep                    root     __         0.00 secs Thu Jul 30 09:48 
grep                    root     __         0.00 secs Thu Jul 30 09:48 
ps                S     root     __         0.02 secs Thu Jul 30 09:48 

但是在这个时间段并没有kill发送信号,那这个信号是由哪个进程发起的,有没有办法查看。
我最初怀疑过操作系统内存耗尽,tomcat进程被OOM_killer杀死了,但是操作系统日志/var/adm/messages里会有out of memory杀进程的日志,我在虚拟机上测试,/var/adm/messages里是有相应日志。下面是free -m的输出:
total used free shared buffers cached
Mem: 32085 26304 5780 1 258 21274
-/+ buffers/cache: 4771 27313
Swap: 16111 50 16061
也怀疑过ssh连接异常关闭导致tomcat进程被杀,但是我在虚拟机上并没有模拟重现故障。
因为centOS ssh登录采用公钥秘钥的方式,并且在故障时间段进程日志里并没有找到kill命令,暂时排除人为强杀进程的情况。
不知道现在的情况我能通过什么方式来定位故障原因。求指点。
另外在tomcat的localhost日志里,有类似如下的异常日志:
Jul 30, 2015 12:14:27 PM org.apache.catalina.core.StandardWrapperValve invoke
SEVERE: Servlet.service() for servlet [jsp] in context with path [] threw exception [javax.servlet.ServletException: javax.servlet.jsp.JspException: Problem accessing the absolute URL "http://www.d1wudal.com:80/getHomeItem.action?navBz=1". java.io.FileNotFoundException: http://www.d1wudal.com:80/getHomeItem.action?navBz=1] with root cause
java.io.FileNotFoundException: http://www.d1wudal.com:80/getHomeItem.action?navBz=1
at sun.net.www.protocol.http.HttpURLConnection.getInputStream(HttpURLConnection.java:1625)
at org.apache.taglibs.standard.tag.common.core.ImportSupport.acquireReader(ImportSupport.java:331)
at org.apache.taglibs.standard.tag.common.core.ImportSupport.acquireString(ImportSupport.java:241)
at org.apache.taglibs.standard.tag.common.core.ImportSupport.doEndTag(ImportSupport.java:161)
at org.apache.jsp.index_jsp._jspx_meth_c_005fimport_005f0(index_jsp.java:177)
at org.apache.jsp.index_jsp._jspService(index_jsp.java:109)
at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:728)
at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:432)
at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:390)
at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:334)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:728)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:305)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
at org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter.doFilter(StrutsPrepareAndExecuteFilter.java:96)
at com.st.core.filter.Struts2Filter.doFilter(Struts2Filter.java:24)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:88)
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:222)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:123)
at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:502)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:171)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:99)
at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:953)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:408)
at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1023)
at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:589)
at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:310)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
at java.lang.Thread.run(Thread.java:745)
我在虚拟机上模拟重现了这个异常,是由客户端的异常请求造成的。我也怀疑过遭到了类似DDOS的攻击,但是查看了系统的连接数量应该不足以让tomcat进程终止。
麻烦帮忙分析下!

3个回答

提示文件没找到,你高并发的情况下有对文件的读写么

他提示的文件名是http://www.d1wudal.com:80/getHomeItem.action?navBz=1,不是一个普通文件,有点像客户端把服务器当做代理服务器来访问
其他网站。这个不是一个正常的访问请求,不知道有没有人碰到过这个问题。

他提示的文件名是http://www.d1wudal.com:80/getHomeItem.action?navBz=1,不是一个普通文件,有点像客户端把服务器当做代理服务器来访问
其他网站。这个不是一个正常的访问请求,不知道有没有人碰到过这个问题。

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问
相关内容推荐