APR错误:-730054

12

我们遇到了与 AXIS2 1.7.3 相关的错误。我们正在使用最新的 Java8 运行 Tomcat8。

java.io.IOException: APR error: -730054
org.apache.axis2.AxisFault: java.io.IOException: APR error: -730054 
      at org.apache.axis2.AxisFault.makeFault(AxisFault.java:430) 
      at org.apache.axis2.transport.http.SOAPMessageFormatter.writeTo(SOAPMessageFormatter.java:78) 
      at org.apache.axis2.transport.http.CommonsHTTPTransportSender.sendUsingOutputStream(CommonsHTTPTransportSender.java:365) 
      at org.apache.axis2.transport.http.CommonsHTTPTransportSender.invoke(CommonsHTTPTransportSender.java:244) 
      at org.apache.axis2.engine.AxisEngine.sendFault(AxisEngine.java:514) 
      at org.apache.axis2.transport.http.AxisServlet.handleFault(AxisServlet.java:450) 
      at org.apache.axis2.transport.http.AxisServlet.processAxisFault(AxisServlet.java:415) 
      at org.apache.axis2.transport.http.AxisServlet.doPost(AxisServlet.java:205) 
      at javax.servlet.http.HttpServlet.service(HttpServlet.java:648) 
      at javax.servlet.http.HttpServlet.service(HttpServlet.java:729) 
      at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:291) 
      at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) 
      at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52) 
      at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:239) 
      at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) 
      at ad.common.GZipServletFilter.doFilter(GZipServletFilter.java:53) 
      at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:239) 
      at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) 
      at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:212) 
      at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:106) 
      at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:502) 
      at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:141) 
      at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:79) 
      at org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:616) 
      at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:88) 
      at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:521) 
      at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1096) 
      at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:674) 
      at org.apache.tomcat.util.net.AprEndpoint$SocketProcessor.doRun(AprEndpoint.java:2500) 
      at org.apache.tomcat.util.net.AprEndpoint$SocketProcessor.run(AprEndpoint.java:2489) 
      at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) 
      at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) 
      at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61) 
      at java.lang.Thread.run(Thread.java:745) 
Caused by: com.ctc.wstx.exc.WstxIOException: java.io.IOException: APR error: -730054 
      at com.ctc.wstx.sw.BaseStreamWriter.flush(BaseStreamWriter.java:261) 
      at org.apache.axiom.util.stax.wrapper.XMLStreamWriterWrapper.flush(XMLStreamWriterWrapper.java:50) 
      at org.apache.axiom.om.impl.MTOMXMLStreamWriter.flush(MTOMXMLStreamWriter.java:231) 
      at org.apache.axiom.om.impl.MTOMXMLStreamWriter.close(MTOMXMLStreamWriter.java:223) 
      at org.apache.axiom.om.impl.common.AxiomContainerSupport.ajc$interMethod$org_apache_axiom_om_impl_common_AxiomContainerSupport$org_apache_axiom_om_impl_intf_AxiomContainer$serializeAndConsume(AxiomContainerSupport.aj:324) 
      at org.apache.axiom.om.impl.llom.OMElementImpl.serializeAndConsume(OMElementImpl.java:1) 
      at org.apache.axis2.transport.http.SOAPMessageFormatter.writeTo(SOAPMessageFormatter.java:74) ... 32 more 
Caused by: org.apache.catalina.connector.ClientAbortException: java.io.IOException: APR error: -730054 
      at org.apache.catalina.connector.OutputBuffer.doFlush(OutputBuffer.java:353) 
      at org.apache.catalina.connector.OutputBuffer.flush(OutputBuffer.java:317) 
      at org.apache.catalina.connector.CoyoteOutputStream.flush(CoyoteOutputStream.java:110) 
      at com.ctc.wstx.io.UTF8Writer.flush(UTF8Writer.java:103) 
      at com.ctc.wstx.sw.BufferingXmlWriter.flush(BufferingXmlWriter.java:225) 
      at com.ctc.wstx.sw.BaseStreamWriter.flush(BaseStreamWriter.java:259) ... 38 more 
Caused by: java.io.IOException: APR error: -730054 
      at org.apache.coyote.http11.InternalAprOutputBuffer.writeToSocket(InternalAprOutputBuffer.java:291) 
      at org.apache.coyote.http11.InternalAprOutputBuffer.writeToSocket(InternalAprOutputBuffer.java:244) 
      at org.apache.coyote.http11.InternalAprOutputBuffer.flushBuffer(InternalAprOutputBuffer.java:213) 
      at org.apache.coyote.http11.AbstractOutputBuffer.flush(AbstractOutputBuffer.java:305) 
      at org.apache.coyote.http11.AbstractHttp11Processor.action(AbstractHttp11Processor.java:765) 
      at org.apache.coyote.Response.action(Response.java:177) 
      at org.apache.catalina.connector.OutputBuffer.doFlush(OutputBuffer.java:349) ... 43 more 

这个错误似乎是随机出现的,并且没有栈跟踪与我们的代码有关。我谷歌了APR代码,但无法理解如何正确解释这个错误。它总是-730054。是否有人能够阐明它可能意味着什么?


有没有修复这个错误的运气?我在使用IE11、angularjs、Tomcat8和部署为war的Spring Boot应用程序时遇到了完全相同的APR错误(我知道,制作jar而不是war)。当检索静态内容时,它会在看似随机的时间间隔内发生。它似乎不会影响应用程序;IE11/angular客户端可以正常工作,api/service也没有任何问题。我在某个地方看到说,如果应用程序在仍在下载资源时导航离开当前href/location,就可能会发生这种情况,但我还没有确认这是否对我产生影响。 - Pytry
到目前为止我还没有修复它,只有一件事需要注意,我在谷歌搜索中发现与“内存不足”有关。 - serge
1个回答

4

以下是一个引人入胜的解释,我无法证明:

730054 = 720000(Tomcat APR_OS_START_SYSERR)+ 10054(WSAECONNRESET

换句话说,连接被对等方重置,因此客户端断开了连接,在服务器端无法做任何事情。


1
既然没有更好的答案,我想我会接受它。唯一的问题是为什么会发生这种情况?以及如何防止它? - serge
1
这个错误会在例如用户的电脑或网络连接中断时出现。或者可能是他们感到无聊并在操作进行到一半时取消了。我认为这是无法预防的,你唯一可以做的就是在服务器上记录一个小日志条目并清理资源。 - Ed Norris
符合我的经验。一个WS端点花了一分钟以上来完成一个数据库查询,此时客户端已经(可以理解地)超时了。在日志中发现了“java.io.IOException: APR error: -730054”,来自我们的Web服务边界过滤器。 - David Easley

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接