我们有一个运行 tomcat6 (6.0.36) 的 Linux 服务器。我们有一个基于 GWT 的网络应用程序。它已经运行了 2 年,直到 5 天内出现了两次问题:HTTPS 停止工作,即使 HTTP 工作正常。两次,简单的重启都解决了问题。
- 证书未接近到期,重启后确实很好
- 发生故障时服务器上没有显着负载,CPU 和 %MEM 都很好
- HTTP 立即响应
- HTTPS 只是超时而没有给我们任何线索
- 'catalina.out' 文件中没有任何内容,但 localhost.*log 文件中有 SocketTimeoutException,见下文
- 线程转储 (kill -3) 没有显示任何异常
任何想法,任何人?
SEVERE: Exception while dispatching incoming RPC call
java.net.SocketTimeoutException
at org.apache.coyote.http11.InternalAprInputBuffer.fill(InternalAprInputBuffer.java:796)
at org.apache.coyote.http11.InternalAprInputBuffer$SocketInputBuffer.doRead(InternalAprInputBuffer.java:830)
at org.apache.coyote.http11.filters.IdentityInputFilter.doRead(IdentityInputFilter.java:116)
at org.apache.coyote.http11.InternalAprInputBuffer.doRead(InternalAprInputBuffer.java:738)
at org.apache.coyote.Request.doRead(Request.java:427)
at org.apache.catalina.connector.InputBuffer.realReadBytes(InputBuffer.java:304)
at org.apache.tomcat.util.buf.ByteChunk.substract(ByteChunk.java:419)
at org.apache.catalina.connector.InputBuffer.read(InputBuffer.java:327)
at org.apache.catalina.connector.CoyoteInputStream.read(CoyoteInputStream.java:162)
at com.google.gwt.user.server.rpc.RPCServletUtils.readContent(RPCServletUtils.java:222)
at com.google.gwt.user.server.rpc.RPCServletUtils.readContentAsGwtRpc(RPCServletUtils.java:250)
at com.google.gwt.user.server.rpc.AbstractRemoteServiceServlet.readContent(AbstractRemoteServiceServlet.java:182)
at com.google.gwt.user.server.rpc.RemoteServiceServlet.processPost(RemoteServiceServlet.java:239)
at com.google.gwt.user.server.rpc.AbstractRemoteServiceServlet.doPost(AbstractRemoteServiceServlet.java:62)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:637)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at au.com.edval.timetable.server.filter.LoginFilter.doFilter(LoginFilter.java:27)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:103)
at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:615)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:293)
at org.apache.coyote.http11.Http11AprProcessor.process(Http11AprProcessor.java:879)
at org.apache.coyote.http11.Http11AprProtocol$Http11ConnectionHandler.process(Http11AprProtocol.java:600)
at org.apache.tomcat.util.net.AprEndpoint$Worker.run(AprEndpoint.java:1703)
at java.lang.Thread.run(Thread.java:679)
Jul 30, 2013 10:27:31 AM org.apache.catalina.core.ApplicationContext log
请注意,几年前我遇到了类似的问题 - HTTPS 可以工作,但速度很慢。事实证明,有一个配置选项表明 HTTPS 应该对每个页面请求进行反向 DNS 查找。这自然会减慢一切。但这现在仍然被禁用,所以它不可能是原因,我不认为。