SpringBoot 应用程序不时抛出“Broken Pipe”

问题描述

我有一个 springboot 应用程序,它使用 xml 并在 docker 容器内运行。当我在某个时候对此进行负载测试时,它会抛出“断管”错误。我以 5 分钟的间隔连续增加 20% 的流量(100% 的流量大约是每 10 秒 300 个请求)。使用 goreplay 工具进行流量发送。从一开始也时不时地抛出这个错误并且它的计数更少(每 10 秒大约 4 到 8 个,但不是连续的)。但在大约 280% 的流量水平上,此错误计数非常高且持续发生。

请问任何人都可以让我知道这可能是什么原因以及如何解决这个问题?或者我需要检查哪个区域来解决这个问题。 使用监控图,我看不到任何服务器矩阵限制超出或日志中的任何其他错误。得到如下错误

谢谢。

[org.apache.catalina.connector.ClientAbortException: java.io.IOException: broken pipe]] with root cause
java.io.IOException: broken pipe
    at sun.nio.ch.FiledispatcherImpl.write0(Native Method) ~[?:?]
    at sun.nio.ch.socketdispatcher.write(UnkNown Source) ~[?:?]
    at sun.nio.ch.IoUtil.writeFromNativeBuffer(UnkNown Source) ~[?:?]
    at sun.nio.ch.IoUtil.write(UnkNown Source) ~[?:?]
    at sun.nio.ch.IoUtil.write(UnkNown Source) ~[?:?]
    at sun.nio.ch.socketChannelImpl.write(UnkNown Source) ~[?:?]
    at org.apache.tomcat.util.net.NioChannel.write(NioChannel.java:135) ~[tomcat-embed-core-9.0.44.jar!/:9.0.44]
    at org.apache.tomcat.util.net.NioBlockingSelector.write(NioBlockingSelector.java:118) ~[tomcat-embed-core-9.0.44.jar!/:9.0.4
4]
    at org.apache.tomcat.util.net.NioSelectorPool.write(NioSelectorPool.java:151) ~[tomcat-embed-core-9.0.44.jar!/:9.0.44]
    at org.apache.tomcat.util.net.NioEndpoint$NioSocketWrapper.doWrite(NioEndpoint.java:1367) ~[tomcat-embed-core-9.0.44.jar!/:9
.0.44]
    at org.apache.tomcat.util.net.socketWrapperBase.doWrite(SocketWrapperBase.java:766) ~[tomcat-embed-core-9.0.44.jar!/:9.0.44]
    at org.apache.tomcat.util.net.socketWrapperBase.writeBlocking(SocketWrapperBase.java:586) ~[tomcat-embed-core-9.0.44.jar!/:9
.0.44]
    at org.apache.tomcat.util.net.socketWrapperBase.write(SocketWrapperBase.java:530) ~[tomcat-embed-core-9.0.44.jar!/:9.0.44]
    at org.apache.coyote.http11.Http11OutputBuffer$SocketoutputBuffer.doWrite(Http11OutputBuffer.java:546) ~[tomcat-embed-core-9
.0.44.jar!/:9.0.44]
    at org.apache.coyote.http11.filters.ChunkedOutputFilter.doWrite(ChunkedOutputFilter.java:112) ~[tomcat-embed-core-9.0.44.jar
!/:9.0.44]
    at org.apache.coyote.http11.Http11OutputBuffer.doWrite(Http11OutputBuffer.java:193) ~[tomcat-embed-core-9.0.44.jar!/:9.0.44]
    at org.apache.coyote.Response.doWrite(Response.java:606) ~[tomcat-embed-core-9.0.44.jar!/:9.0.44]
    at org.apache.catalina.connector.OutputBuffer.realWriteBytes(OutputBuffer.java:340) ~[tomcat-embed-core-9.0.44.jar!/:9.0.44]
    at org.apache.catalina.connector.OutputBuffer.flushByteBuffer(OutputBuffer.java:783) ~[tomcat-embed-core-9.0.44.jar!/:9.0.44
]
    at org.apache.catalina.connector.OutputBuffer.append(OutputBuffer.java:688) ~[tomcat-embed-core-9.0.44.jar!/:9.0.44]
    at org.apache.catalina.connector.OutputBuffer.writeBytes(OutputBuffer.java:388) ~[tomcat-embed-core-9.0.44.jar!/:9.0.44]
    at org.apache.catalina.connector.OutputBuffer.write(OutputBuffer.java:366) ~[tomcat-embed-core-9.0.44.jar!/:9.0.44]
    at org.apache.catalina.connector.CoyoteOutputStream.write(CoyoteOutputStream.java:96) ~[tomcat-embed-core-9.0.44.jar!/:9.0.4
4]
    at com.sun.xml.bind.v2.runtime.output.UTF8XmlOutput.write(UTF8XmlOutput.java:381) ~[jaxb-runtime-2.3.3.jar!/:2.3.3]
    at com.sun.xml.bind.v2.runtime.output.Encoded.write(Encoded.java:137) ~[jaxb-runtime-2.3.3.jar!/:2.3.3]
    at com.sun.xml.bind.v2.runtime.output.UTF8XmlOutput.attribute(UTF8XmlOutput.java:224) ~[jaxb-runtime-2.3.3.jar!/:2.3.3]
    at com.sun.xml.bind.v2.runtime.XMLSerializer.attribute(XMLSerializer.java:416) ~[jaxb-runtime-2.3.3.jar!/:2.3.3]
    at com.sun.xml.bind.v2.runtime.property.AttributeProperty.serializeAttributes(AttributeProperty.java:73) ~[jaxb-runtime-2.3.
3.jar!/:2.3.3]
    at com.sun.xml.bind.v2.runtime.ClassBeanInfoImpl.serializeAttributes(ClassBeanInfoImpl.java:352) ~[jaxb-runtime-2.3.3.jar!/:
2.3.3]
    at com.sun.xml.bind.v2.runtime.XMLSerializer.childAsxsitype(XMLSerializer.java:659) ~[jaxb-runtime-2.3.3.jar!/:2.3.3]
    at com.sun.xml.bind.v2.runtime.property.ArrayElementNodeProperty.serializeItem(ArrayElementNodeProperty.java:39) ~[jaxb-runt
ime-2.3.3.jar!/:2.3.3]
    at com.sun.xml.bind.v2.runtime.property.ArrayElementProperty.serializeListBody(ArrayElementProperty.java:142) ~[jaxb-runtime
-2.3.3.jar!/:2.3.3]
    at com.sun.xml.bind.v2.runtime.property.ArrayERProperty.serializeBody(ArrayERProperty.java:129) ~[jaxb-runtime-2.3.3.jar!/:2
.3.3]
    at com.sun.xml.bind.v2.runtime.ClassBeanInfoImpl.serializeBody(ClassBeanInfoImpl.java:329) ~[jaxb-runtime-2.3.3.jar!/:2.3.3]
    at com.sun.xml.bind.v2.runtime.XMLSerializer.childAsxsitype(XMLSerializer.java:666) ~[jaxb-runtime-2.3.3.jar!/:2.3.3]
    at com.sun.xml.bind.v2.runtime.property.SingleElementNodeProperty.serializeBody(SingleElementNodeProperty.java:128) ~[jaxb-r
untime-2.3.3.jar!/:2.3.3]
    at com.sun.xml.bind.v2.runtime.ClassBeanInfoImpl.serializeBody(ClassBeanInfoImpl.java:329) ~[jaxb-runtime-2.3.3.jar!/:2.3.3]
    at com.sun.xml.bind.v2.runtime.XMLSerializer.childAsxsitype(XMLSerializer.java:666) ~[jaxb-runtime-2.3.3.jar!/:2.3.3]
    at com.sun.xml.bind.v2.runtime.property.SingleElementNodeProperty.serializeBody(SingleElementNodeProperty.java:128) ~[jaxb-r
untime-2.3.3.jar!/:2.3.3]
    at com.sun.xml.bind.v2.runtime.ClassBeanInfoImpl.serializeBody(ClassBeanInfoImpl.java:329) ~[jaxb-runtime-2.3.3.jar!/:2.3.3]
    at com.sun.xml.bind.v2.runtime.XMLSerializer.childAsxsitype(XMLSerializer.java:666) ~[jaxb-runtime-2.3.3.jar!/:2.3.3]
    at com.sun.xml.bind.v2.runtime.property.ArrayElementNodeProperty.serializeItem(ArrayElementNodeProperty.java:39) ~[jaxb-runt
ime-2.3.3.jar!/:2.3.3]
    at com.sun.xml.bind.v2.runtime.property.ArrayElementProperty.serializeListBody(ArrayElementProperty.java:142) ~[jaxb-runtime
-2.3.3.jar!/:2.3.3]
    at com.sun.xml.bind.v2.runtime.property.ArrayERProperty.serializeBody(ArrayERProperty.java:129) ~[jaxb-runtime-2.3.3.jar!/:2
.3.3]
    at com.sun.xml.bind.v2.runtime.ClassBeanInfoImpl.serializeBody(ClassBeanInfoImpl.java:329) ~[jaxb-runtime-2.3.3.jar!/:2.3.3]
    at com.sun.xml.bind.v2.runtime.XMLSerializer.childAsxsitype(XMLSerializer.java:666) ~[jaxb-runtime-2.3.3.jar!/:2.3.3]
    at com.sun.xml.bind.v2.runtime.property.ArrayElementNodeProperty.serializeItem(ArrayElementNodeProperty.java:39) ~[jaxb-runt
ime-2.3.3.jar!/:2.3.3]
    at com.sun.xml.bind.v2.runtime.property.ArrayElementProperty.serializeListBody(ArrayElementProperty.java:142) ~[jaxb-runtime
-2.3.3.jar!/:2.3.3]
    at com.sun.xml.bind.v2.runtime.property.ArrayERProperty.serializeBody(ArrayERProperty.java:129) ~[jaxb-runtime-2.3.3.jar!/:2
.3.3]
    at com.sun.xml.bind.v2.runtime.ClassBeanInfoImpl.serializeBody(ClassBeanInfoImpl.java:329) ~[jaxb-runtime-2.3.3.jar!/:2.3.3]
    at com.sun.xml.bind.v2.runtime.XMLSerializer.childAsxsitype(XMLSerializer.java:666) ~[jaxb-runtime-2.3.3.jar!/:2.3.3]
    at com.sun.xml.bind.v2.runtime.property.SingleElementNodeProperty.serializeBody(SingleElementNodeProperty.java:128) ~[jaxb-r
untime-2.3.3.jar!/:2.3.3]
    at com.sun.xml.bind.v2.runtime.ClassBeanInfoImpl.serializeBody(ClassBeanInfoImpl.java:329) ~[jaxb-runtime-2.3.3.jar!/:2.3.3]
    at com.sun.xml.bind.v2.runtime.XMLSerializer.childAsSoleContent(XMLSerializer.java:563) ~[jaxb-runtime-2.3.3.jar!/:2.3.3]
    at com.sun.xml.bind.v2.runtime.ClassBeanInfoImpl.serializeRoot(ClassBeanInfoImpl.java:310) ~[jaxb-runtime-2.3.3.jar!/:2.3.3]
    at com.sun.xml.bind.v2.runtime.XMLSerializer.childAsRoot(XMLSerializer.java:464) ~[jaxb-runtime-2.3.3.jar!/:2.3.3]
    at com.sun.xml.bind.v2.runtime.MarshallerImpl.write(MarshallerImpl.java:298) ~[jaxb-runtime-2.3.3.jar!/:2.3.3]
    at com.sun.xml.bind.v2.runtime.MarshallerImpl.marshal(MarshallerImpl.java:226) ~[jaxb-runtime-2.3.3.jar!/:2.3.3]
    at org.springframework.http.converter.xml.Jaxb2RootElementHttpMessageConverter.writetoResult(Jaxb2RootElementHttpMessageConv
erter.java:183) ~[spring-web-5.3.5.jar!/:5.3.5]
    at org.springframework.http.converter.xml.AbstractXmlHttpMessageConverter.writeInternal(AbstractXmlHttpMessageConverter.java
:85) ~[spring-web-5.3.5.jar!/:5.3.5]
    at org.springframework.http.converter.AbstractHttpMessageConverter.write(AbstractHttpMessageConverter.java:227) ~[spring-web
-5.3.5.jar!/:5.3.5]
    at org.springframework.web.servlet.mvc.method.annotation.AbstractMessageConverterMethodProcessor.writeWithMessageConverters(
AbstractMessageConverterMethodProcessor.java:293) ~[spring-webmvc-5.3.5.jar!/:5.3.5]
    at org.springframework.web.servlet.mvc.method.annotation.RequestResponseBodyMethodProcessor.handleReturnValue(RequestRespons
eBodyMethodProcessor.java:181) ~[spring-webmvc-5.3.5.jar!/:5.3.5]
    at org.springframework.web.method.support.HandlerMethodReturnValueHandlerComposite.handleReturnValue(HandlerMethodReturnValu
eHandlerComposite.java:78) ~[spring-web-5.3.5.jar!/:5.3.5]
    at org.springframework.web.servlet.mvc.method.annotation.ServletinvocableHandlerMethod.invokeAndHandle(ServletinvocableHandl
erMethod.java:124) ~[spring-webmvc-5.3.5.jar!/:5.3.5]
    at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHand
lerAdapter.java:894) ~[spring-webmvc-5.3.5.jar!/:5.3.5]
    at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAd
apter.java:808) ~[spring-webmvc-5.3.5.jar!/:5.3.5]
    at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:87) ~[sp
ring-webmvc-5.3.5.jar!/:5.3.5]
    at org.springframework.web.servlet.dispatcherServlet.dodispatch(dispatcherServlet.java:1060) ~[spring-webmvc-5.3.5.jar!/:5.3
.5]
    at org.springframework.web.servlet.dispatcherServlet.doService(dispatcherServlet.java:962) ~[spring-webmvc-5.3.5.jar!/:5.3.5
]
    at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:1006) ~[spring-webmvc-5.3.5.jar!/:5
.3.5]
    at org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:909) ~[spring-webmvc-5.3.5.jar!/:5.3.5]
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:652) ~[tomcat-embed-core-9.0.44.jar!/:4.0.FR]
    at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:883) ~[spring-webmvc-5.3.5.jar!/:5.3.5]
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:733) ~[tomcat-embed-core-9.0.44.jar!/:4.0.FR]
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:227) ~[tomcat-embed-core-9.0
.44.jar!/:9.0.44]
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162) ~[tomcat-embed-core-9.0.44.jar!
/:9.0.44]
    at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53) ~[tomcat-embed-websocket-9.0.44.jar!/:9.0.44]
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189) ~[tomcat-embed-core-9.0
.44.jar!/:9.0.44]
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162) ~[tomcat-embed-core-9.0.44.jar!
/:9.0.44]
    at org.springframework.web.filter.RequestContextFilter.doFilterInternal(RequestContextFilter.java:100) ~[spring-web-5.3.5.ja
r!/:5.3.5]
    at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119) ~[spring-web-5.3.5.jar!/:5.3.
5]
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189) ~[tomcat-embed-core-9.0
.44.jar!/:9.0.44]
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162) ~[tomcat-embed-core-9.0.44.jar!
/:9.0.44]
    at org.springframework.web.filter.FormContentFilter.doFilterInternal(FormContentFilter.java:93) ~[spring-web-5.3.5.jar!/:5.3
.5]
    at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119) ~[spring-web-5.3.5.jar!/:5.3.
5]
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189) ~[tomcat-embed-core-9.0
.44.jar!/:9.0.44]
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162) ~[tomcat-embed-core-9.0.44.jar!
/:9.0.44]
    at datadog.trace.instrumentation.springweb.HandlerMappingResourceNameFilter.doFilterInternal(HandlerMappingResourceNameFilte
r.java:49) ~[?:?]
    at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119) ~[spring-web-5.3.5.jar!/:5.3.
5]
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189) ~[tomcat-embed-core-9.0
.44.jar!/:9.0.44]
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162) ~[tomcat-embed-core-9.0.44.jar!
/:9.0.44]
    at org.springframework.boot.actuate.metrics.web.servlet.WebMvcmetricsFilter.doFilterInternal(WebMvcmetricsFilter.java:93) ~[
spring-boot-actuator-2.4.4.jar!/:2.4.4]
    at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119) ~[spring-web-5.3.5.jar!/:5.3.
5]
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189) ~[tomcat-embed-core-9.0
.44.jar!/:9.0.44]
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162) ~[tomcat-embed-core-9.0.44.jar!
/:9.0.44]
    at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:201) ~[spring-web-5.
3.5.jar!/:5.3.5]
    at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119) ~[spring-web-5.3.5.jar!/:5.3.
5]
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189) ~[tomcat-embed-core-9.0
.44.jar!/:9.0.44]
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162) ~[tomcat-embed-core-9.0.44.jar!
/:9.0.44]
    at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:202) ~[tomcat-embed-core-9.0.44.jar!/:9.0.
44]
    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:97) ~[tomcat-embed-core-9.0.44.jar!/:9.0.4
4]
    at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:542) ~[tomcat-embed-core-9.0.44.jar!/:9
.0.44]
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:143) ~[tomcat-embed-core-9.0.44.jar!/:9.0.44]
    at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:92) ~[tomcat-embed-core-9.0.44.jar!/:9.0.44]
    at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:78) ~[tomcat-embed-core-9.0.44.jar!/:9.0.44]
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:357) ~[tomcat-embed-core-9.0.44.jar!/:9.0.44]
    at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:374) ~[tomcat-embed-core-9.0.44.jar!/:9.0.44]
    at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:65) ~[tomcat-embed-core-9.0.44.jar!/:9.0.44]
    at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:893) ~[tomcat-embed-core-9.0.44.jar!/:
9.0.44]
    at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1707) ~[tomcat-embed-core-9.0.44.jar!/:9.0.
44]
    at org.apache.tomcat.util.net.socketProcessorBase.run(SocketProcessorBase.java:49) ~[tomcat-embed-core-9.0.44.jar!/:9.0.44]
    at java.util.concurrent.ThreadPoolExecutor.runWorker(UnkNown Source) ~[?:?]
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(UnkNown Source) ~[?:?]
    at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61) ~[tomcat-embed-core-9.0.44.jar!/:9.0.4
4]

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...