我的网站出现停机问题。我在 Linux Redhat 上安装了 apache 2 + mod_jk + tomcat 5.5。最近才开始每天关闭我的网站一次。只有重新启动tomcat后,网站才能恢复正常。
tomcat上的应用程序错误日志(对不起,日志中隐藏了隐私信息):
2010-11-14 00:40:13,726 错误 org.apache.catalina.core.StandardWrapperValve [invoke] - Servlet.service() 用于 servlet 操作引发异常 java.lang.OutOfMemoryError:无法创建新的本地线程 在 java.lang.Thread.start0(本机方法) 在 java.lang.Thread.start(Thread.java:574) 在 ******.exchange.adapter.dispatcher.impl.XMLCommandDispatcher.sendCommand(XMLCommandDispatcher.java:109) 在 ******.exchange.adapter.star******.api.impl.******ApiImpl.******PricingAvailability(******ApiImpl.java: 356) 在 ******.exchange.adapter.star******.impl.Concrete******GatewayImpl.find******Promotion(Concrete******GatewayImpl.java :123) 在 ******.exchange.service.impl.Concrete******ManagerImpl.find******Promotion(Concrete******ManagerImpl.java:199) 在 sun.reflect.GeneratedMethodAccessor1142.invoke(未知来源) 在 sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) 在 java.lang.reflect.Method.invoke(Method.java:585) 在 org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:282) 在 org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:155) 在 org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:122) 在 org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:56) 在 org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:144) 在 org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:174) 在 $Proxy16.find******促销(未知来源) 在 ******.ibe.servlet.crdms.search.******SearchPromotionServlet******.handleRequest(******SearchPromotionServlet******.java:75) 在 org.springframework.web.servlet.mvc.SimpleControllerHandlerAdapter.handle(SimpleControllerHandlerAdapter.java:44) 在 org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:595) 在 org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:543) 在 org.springframework.web.servlet.FrameworkServlet.serviceWrapper(FrameworkServlet.java:390) 在 org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:341) 在 javax.servlet.http.HttpServlet.service(HttpServlet.java:690) 在 javax.servlet.http.HttpServlet.service(HttpServlet.java:803) 在 org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:269) 在 org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:188) 在 org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:213) 在 org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:174) 在 org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127) 在 org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:117) 在 org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:108) 在 org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:174) 在 org.apache.jk.server.JkCoyoteHandler.invoke(JkCoyoteHandler.java:200) 在 org.apache.jk.common.HandlerRequest.invoke(HandlerRequest.java:283) 在 org.apache.jk.common.ChannelSocket.invoke(ChannelSocket.java:773) 在 org.apache.jk.common.ChannelSocket.processConnection(ChannelSocket.java:703) 在 org.apache.jk.common.ChannelSocket$SocketConnection.runIt(ChannelSocket.java:895) 在 org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:689) 在 java.lang.Thread.run(Thread.java:595) 2010-11-14 00:40:43,762 错误 org.apache.catalina.core.ApplicationDispatcher [invoke] - servlet jsp 的 Servlet.service() 抛出异常 2010-11-14 00:40:43,805 错误 org.apache.catalina.core.StandardWrapperValve [invoke] - servlet jsp 的 Servlet.service() 抛出异常 java.lang.OutOfMemoryError:无法创建新的本地线程 在 java.lang.Thread.start0(本机方法) 在 java.lang.Thread.start(Thread.java:574) 在 java.util.Timer.(Timer.java:154) 在 java.util.Timer.(Timer.java:122) 在 com.mysql.jdbc.Connection.(Connection.java:1441) 在 com.mysql.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java:266) 在 java.sql.DriverManager.getConnection(DriverManager.java:525) 在 java.sql.DriverManager.getConnection(DriverManager.java:171) 在 org.apache.jsp.frameset_005f******_005fbottom_005f1_jsp._jspService(frameset_005f******_005fbottom_005f1_jsp.java:88) 在 org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:98) 在 javax.servlet.http.HttpServlet.service(HttpServlet.java:803) 在 org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:331) 在 org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:329) 在 org.apache.jasper.servlet.JspServlet.service(JspServlet.java:265) 在 javax.servlet.http.HttpServlet.service(HttpServlet.java:803) 在 org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:269) 在 org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:188) 在 org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:213) 在 org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:174) 在 org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127) 在 org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:117) 在 org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:108) 在 org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:174) 在 org.apache.jk.server.JkCoyoteHandler.invoke(JkCoyoteHandler.java:200) 在 org.apache.jk.common.HandlerRequest.invoke(HandlerRequest.java:283) 在 org.apache.jk.common.ChannelSocket.invoke(ChannelSocket.java:773) 在 org.apache.jk.common.ChannelSocket.processConnection(ChannelSocket.java:703) 在 org.apache.jk.common.ChannelSocket$SocketConnection.runIt(ChannelSocket.java:895) 在 org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:689) 在 java.lang.Thread.run(Thread.java:595) 2010-11-14 01:54:25,819 错误 org.apache.catalina.core.ApplicationDispatcher [invoke] - servlet jsp 的 Servlet.service() 抛出异常
Tomcat 宕机时的 Mod_jk 日志条目:
[Sun Nov 14 00:59:52 2010] [error] ajp_connection_tcp_get_message::jk_ajp_common.c (961): Can't receive response message from tomcat, network problems or tomcat is down (127.0.0.1:8009), err= -104 [Sun Nov 14 00:59:52 2010] [error] ajp_get_reply::jk_ajp_common.c (1503): Tomcat 已关闭或拒绝连接。尚未向客户端发送响应(尚未) [Sun Nov 14 01:00:01 2010] [error] ajp_connection_tcp_get_message::jk_ajp_common.c (961): 无法接收来自 tomcat 的响应消息,网络问题或 tomcat 已关闭 (127.0.0.1:8009),err= -104 [Sun Nov 14 01:00:01 2010] [error] ajp_get_reply::jk_ajp_common.c (1503): Tomcat 已关闭或拒绝连接。尚未向客户端发送响应(尚未) [2010 年 11 月 14 日星期日 01:00:01] [错误] ajp_service::jk_ajp_common.c (1758):连接到 tomcat 时出错。Tomcat 可能未启动或正在侦听错误的端口。工人=工人1 失败 [2010 年 11 月 14 日星期日 01:00:01] worker1 mydomain.com 271.622400 [Sun Nov 14 01:00:01 2010] [error] ajp_connection_tcp_get_message::jk_ajp_common.c (961): 无法接收来自 tomcat 的响应消息,网络问题或 tomcat 已关闭 (127.0.0.1:8009),err= -104 [Sun Nov 14 01:00:01 2010] [error] ajp_get_reply::jk_ajp_common.c (1503): Tomcat 已关闭或拒绝连接。尚未向客户端发送响应(尚未) [Sun Nov 14 01:00:06 2010] [error] ajp_connection_tcp_get_message::jk_ajp_common.c (961): 无法接收来自 tomcat 的响应消息,网络问题或 tomcat 已关闭 (127.0.0.1:8009),err= -104 [2010 年 11 月 14 日星期日 01:00:06] [错误] ajp_get_reply::jk_ajp_common.c (1503):Tomcat 已关闭或拒绝连接。尚未向客户端发送响应(尚未) [2010 年 11 月 14 日星期日 01:00:06] [错误] ajp_service::jk_ajp_common.c (1758):连接到 tomcat 时出错。Tomcat 可能未启动或正在侦听错误的端口。工人=工人1 失败 [Sun Nov 14 01:00:06 2010] worker1 mydomain.com 86.999946 [Sun Nov 14 01:00:06 2010] [error] ajp_connection_tcp_get_message::jk_ajp_common.c (961): 无法接收来自 tomcat 的响应消息,网络问题或 tomcat 已关闭 (127.0.0.1:8009),err= -104 [2010 年 11 月 14 日星期日 01:00:06] [错误] ajp_get_reply::jk_ajp_common.c (1503):Tomcat 已关闭或拒绝连接。尚未向客户端发送响应(尚未) [Sun Nov 14 01:00:10 2010] [error] ajp_connection_tcp_get_message::jk_ajp_common.c (961): 无法接收来自 tomcat 的响应消息,网络问题或 tomcat 已关闭 (127.0.0.1:8009),err= -104 [Sun Nov 14 01:00:10 2010] [error] ajp_get_reply::jk_ajp_common.c (1503): Tomcat 已关闭或拒绝连接。尚未向客户端发送响应(尚未) [2010 年 11 月 14 日星期日 01:00:10] [错误] ajp_service::jk_ajp_common.c (1758):连接到 tomcat 时出错。Tomcat 可能未启动或正在侦听错误的端口。工人=工人1 失败 [2010 年 11 月 14 日星期日 01:00:10] worker1 mydomain.com 39.000187
/var/log/messages 中的消息:
11 月 14 日 00:59:40 nemo 内核:端口 8009 上可能发生 SYN 泛洪。发送 cookie。 11 月 14 日 01:00:47 nemo 内核:端口 8009 上可能发生 SYN 泛洪。发送 cookie。 11 月 14 日 01:01:49 nemo 内核:端口 8009 上可能发生 SYN 泛洪。发送 cookie。 11 月 14 日 01:02:54 nemo 内核:端口 8009 上可能发生 SYN 泛洪。发送 cookie。 11 月 14 日 01:04:03 nemo 内核:端口 8009 上可能发生 SYN 泛洪。发送 cookie。 11 月 14 日 01:05:06 nemo 内核:端口 8009 上可能发生 SYN 泛洪。发送 cookie。 11 月 14 日 01:06:13 nemo 内核:端口 8009 上可能发生 SYN 泛洪。发送 cookie。 11 月 14 日 01:07:14 nemo 内核:端口 8009 上可能发生 SYN 泛洪。发送 cookie。 11 月 14 日 01:08:15 nemo 内核:端口 8009 上可能发生 SYN 泛洪。发送 cookie。 11 月 14 日 01:09:19 nemo 内核:端口 8009 上可能发生 SYN 泛洪。发送 cookie。 11 月 14 日 01:10:23 nemo 内核:端口 8009 上可能发生 SYN 泛洪。发送 cookie。 11 月 14 日 01:11:29 nemo 内核:端口 8009 上可能发生 SYN 泛洪。发送 cookie。 11 月 14 日 01:12:29 nemo 内核:端口 8009 上可能发生 SYN 泛洪。发送 cookie。 11 月 14 日 01:13:29 nemo 内核:端口 8009 上可能发生 SYN 泛洪。发送 cookie。 11 月 14 日 01:14:56 nemo 内核:端口 8009 上可能发生 SYN 泛洪。发送 cookie。 11 月 14 日 01:16:04 nemo 内核:端口 8009 上可能发生 SYN 泛洪。发送 cookie。 11 月 14 日 01:17:19 nemo 内核:端口 8009 上可能发生 SYN 泛洪。发送 cookie。 11 月 14 日 01:18:22 nemo 内核:端口 8009 上可能发生 SYN 泛洪。发送 cookie。 11 月 14 日 01:19:26 nemo 内核:端口 8009 上可能发生 SYN 泛洪。发送 cookie。 11 月 14 日 01:20:26 nemo 内核:端口 8009 上可能发生 SYN 泛洪。发送 cookie。 11 月 14 日 01:21:36 nemo 内核:端口 8009 上可能发生 SYN 泛洪。发送 cookie。 11 月 14 日 01:22:37 nemo 内核:端口 8009 上可能发生 SYN 泛洪。发送 cookie。 11 月 14 日 01:23:48 nemo 内核:端口 8009 上可能发生 SYN 泛洪。发送 cookie。 11 月 14 日 01:24:50 nemo 内核:端口 8009 上可能发生 SYN 泛洪。发送 cookie。 11 月 14 日 01:25:54 nemo 内核:端口 8009 上可能发生 SYN 泛洪。发送 cookie。 11 月 14 日 01:26:57 nemo 内核:端口 8009 上可能发生 SYN 泛洪。发送 cookie。 11 月 14 日 01:29:08 nemo 内核:端口 8009 上可能发生 SYN 泛洪。发送 cookie。 11 月 14 日 01:30:10 nemo 内核:端口 8009 上可能发生 SYN 泛洪。发送 cookie。 11 月 14 日 03:00:01 nemo setroubleshoot:SELinux 正在阻止 mysqld (mysqld_t) "getattr" 到 /var/lib/mysql/mysql.sock (var_lib_t)。获取完整的 SELinux 消息。奔海$ 11 月 14 日 03:00:01 nemo setroubleshoot:SELinux 正在阻止 mysqld (mysqld_t) "getattr" 到 /var/lib/mysql/nemo.me-tech.com.my.err (var_lib_t)。对于完整的 SELinux 混乱$ 11 月 14 日 03:00:01 nemo setroubleshoot:SELinux 正在阻止 mysqld (mysqld_t) “读取”到 ./time_zone_name.frm (var_lib_t)。获取完整的 SELinux 消息。运行 sealert -l $
阿帕奇配置:
# 前叉 MPM # StartServers:要启动的服务器进程数 # MinSpareServers:保持空闲的最小服务器进程数 # MaxSpareServers:保持空闲的最大服务器进程数 # MaxClients:允许启动的最大服务器进程数 # MaxRequestsPerChild:服务器进程服务的最大请求数 ‹IfModule prefork.c› 启动服务器 5 MinSpareServers 5 MaxSpareServers 10 最大客户数 256 MaxRequestsPerChild 0 ‹/IfModule› # 工人 MPM # StartServers:要启动的服务器进程的初始数量 # MaxClients:最大同时客户端连接数 # MinSpareThreads:保持空闲的最小工作线程数 # MaxSpareThreads:保持空闲的最大工作线程数 # ThreadsPerChild:每个服务器进程中的工作线程数恒定 # MaxRequestsPerChild:服务器进程服务的最大请求数 ‹IfModule worker.c› 启动服务器 2 最大客户数 256 MinSpareThreads 25 最大备用线程数 75 每个孩子的线程数 25 MaxRequestsPerChild 0 ‹/IfModule›
Apache Mod_jk worker.properties:
worker.list=worker1 worker.worker1.type=ajp13 worker.worker1.host=127.0.0.1 worker.worker1.port=8009 worker.worker1.lbfactor=1 worker.worker1.socket_keepalive=1 worker.worker1.recycle_timeout=180 worker.worker1.sticky_session=False
Tomcat server.xml(mod_jk 的 AJP 连接器):
‹Connector className="org.apache.coyote.tomcat5.CoyoteConnector" 端口="8009" 协议="AJP/1.3" enableLookups="true" 重定向端口="8443" 接受计数=“10” 调试="0" 连接超时="5000" 使用URIValidationHack="假" maxPostSize="10000000" maxThreads="256" maxSpareThreads="10" URIEncoding="UTF-8" protocolHandlerClassName="org.apache.jk.server.JkCoyoteHandler"/›
任何帮助或建议将不胜感激。
非常感谢