【发布时间】:2015-05-08 10:46:38
【问题描述】:
我有一个Tomcat 7 服务器接收大量GET 请求。这在一段时间内效果很好,然后突然停止工作(7-8 小时后)。
当它停止工作时,我收到此错误:
mai 06, 2015 12:47:58 AM org.apache.coyote.http11.AbstractHttp11Processor 进程 信息:解析 HTTP 请求标头时出错 注意:进一步出现的 HTTP 标头解析错误将记录在 DEBUG 级别。
在此之后的所有其他错误都是一样的。我试图停止获取请求,但无论如何它都会在一段时间后崩溃。你有什么想法吗?
这是在它崩溃之前:
[06/May/2015:10:47:11 +0200] "GET /ListenerServlet?request=getLastChanged&_=1430852558104 HTTP/1.1" 200 32
崩溃后:
[06/May/2015:10:47:14 +0200] "GET /ListenerServlet?request=getLastChanged&_=1430902035081 HTTP/1.1" 500 1674
崩溃后,Servlet无法获取请求参数..抛出这个空指针:
SEVERE: Servlet.service() for servlet [RoomServlet] in context with path [] threw exception java.lang.NullPointerException
at factory.Factory.initEditMode(Factory.java:37)
at factory.Factory.init(Factory.java:20)
at factory.TabsFactory.<init>(TabsFactory.java:19)
at servlet.RoomServlet.getTabs(RoomServlet.java:285)
at servlet.RoomServlet.doGet(RoomServlet.java:46)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:620)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:727)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:303)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:220)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:122)
at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:501)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:170)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:98)
at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:950)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:116)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:408)
at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1040)
at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:607)
at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:313)
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)
接着是:
mai 07, 2015 9:58:00 AM org.apache.catalina.core.StandardContext listenerStop
SEVERE: Exception sending context destroyed event to listener instance of class websocket.drawboard.DrawboardContextListener
java.lang.NoClassDefFoundError: javax/websocket/Endpoint
at java.lang.ClassLoader.defineClass1(Native Method)
at java.lang.ClassLoader.defineClass(ClassLoader.java:800)
at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142)
at org.apache.catalina.loader.WebappClassLoader.findClassInternal(WebappClassLoader.java:2944)
at org.apache.catalina.loader.WebappClassLoader.findClass(WebappClassLoader.java:1208)
at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1688)
at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1569)
at websocket.drawboard.DrawboardContextListener.contextDestroyed(DrawboardContextListener.java:32)
at org.apache.catalina.core.StandardContext.listenerStop(StandardContext.java:5014)
at org.apache.catalina.core.StandardContext.stopInternal(StandardContext.java:5659)
at org.apache.catalina.util.LifecycleBase.stop(LifecycleBase.java:232)
at org.apache.catalina.core.ContainerBase$StopChild.call(ContainerBase.java:1575)
at org.apache.catalina.core.ContainerBase$StopChild.call(ContainerBase.java:1564)
at java.util.concurrent.FutureTask.run(FutureTask.java:262)
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)
Caused by: java.lang.ClassNotFoundException: javax.websocket.Endpoint
at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1718)
at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1569)
... 17 more
如果我还有什么需要补充的,请告诉我!我真的很感激。
编辑:今天是个好日子,我遇到了一个新错误!这可能与 JDBC 有关系....
从服务器成功接收到的最后一个数据包是 33 921 291 毫秒前。最后一个成功发送到服务器的数据包是 1 毫秒前。连接关闭后不允许任何操作。
【问题讨论】:
-
你试过更新tomcat版本了吗?也许这是一个错误。 (我遇到了一个问题,使用新版本的tomcat后解决了)
-
我目前正在使用来自 apt-get 的 Tomcat Linux 版本。
-
这可能是资源问题,因为您的应用程序正在使用 Web 套接字。有关详细信息,请参阅tomcat.apache.org/tomcat-7.0-doc/web-socket-howto.html。例如,您可能需要更改 Tomcat 配置以避免每个连接消耗一个线程来实现长连接。
-
@OleReidarHolm:这可能不是最新版本!
-
你注意到了吗:java.lang.ClassNotFoundException: javax.websocket.Endpoint