Cannot forward to error page for request ......

5193 단어
오늘 현장에서 다음과 같은 문제를 보고했습니다.
 Cannot forward to error page for request [/order/search] as the response has already been committed. As a result, 
the response may have the wrong status code. If your application is running on WebSphere Application Server you may be
able to resolve this problem by setting com.ibm.ws.webcontainer.invokeFlushAfterService to false"

이 오류 정보에서 알 수 있듯이 오류 페이지로 갈 수 없습니다. 요청:/order/search 이 URL에서.다음에 잘못된 상태 인코딩을 되돌려주고 환경 변수를 설정하라고 알려 줍니다.
이 상황에서 우리는 다음과 같은 몇 가지 원인을 예상할 수 있다.
1.forward의 URL 관련 보기에 문제가 있어 보여줄 수 없습니다
2. forward의 URL 오류
3. 이 요청을 실행하는 중 관련 논리적 오류가 발생하여 잘못된 상태 코드를 되돌려줍니다.
 
첫 번째와 두 번째 오류는 잘 배열되지만 세 번째 오류는 이 URL과 관련된 모든 논리를 보고 오류 코드가 발생하는 원인을 찾아야 한다.
내 현장 오류에는 다음과 같은 정보도 있습니다.
2018-11-01T06:46:30.891Z,paas-03,org.apache.catalina.connector.ClientAbortException: java.io.IOException: Connection reset by peer
2018-11-01T06:46:30.892Z,paas-03,#011at org.apache.catalina.connector.CoyoteOutputStream.write(CoyoteOutputStream.java:96) ~[catalina.jar:8.5.13]
2018-11-01T06:46:30.893Z,paas-03,#011at net.bull.javamelody.internal.web.CounterResponseStream.write(CounterResponseStream.java:81) ~[javamelody-core-1.68.0.jar:1.68.0]
2018-11-01T06:46:30.893Z,paas-03,#011at com.fasterxml.jackson.core.json.UTF8JsonGenerator.flush(UTF8JsonGenerator.java:1047) ~[jackson-core-2.8.7.jar:2.8.7]
2018-11-01T06:46:30.893Z,paas-03,#011at org.springframework.http.converter.json.AbstractJackson2HttpMessageConverter.writeInternal(AbstractJackson2HttpMessageConverter.java:285) ~[spring-web-4.3.7.RELEASE.jar:4.3.7.RELEASE]
2018-11-01T06:46:30.894Z,paas-03,#011at org.springframework.web.method.support.HandlerMethodReturnValueHandlerComposite.handleReturnValue(HandlerMethodReturnValueHandlerComposite.java:81) ~[spring-web-4.3.7.RELEASE.jar:4.3.7.RELEASE]
2018-11-01T06:46:30.894Z,paas-03,#011at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:132) ~[spring-webmvc-4.3.7.RELEASE.jar:4.3.7.RELEASE]
2018-11-01T06:46:30.895Z,paas-03,#011at javax.servlet.http.HttpServlet.service(HttpServlet.java:742) ~[servlet-api.jar:na]
2018-11-01T06:46:30.897Z,paas-03,#011at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:192) [catalina.jar:8.5.13]
2018-11-01T06:46:30.899Z,paas-03,#011at org.springframework.boot.web.support.ErrorPageFilter.doFilter(ErrorPageFilter.java:115) [spring-boot-1.5.2.RELEASE.jar:1.5.2.RELEASE]
2018-11-01T06:46:30.900Z,paas-03,#011at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:96) [catalina.jar:8.5.13]
2018-11-01T06:46:30.900Z,paas-03,#011at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:140) [catalina.jar:8.5.13]
2018-11-01T06:46:30.900Z,paas-03,#011at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:80) [catalina.jar:8.5.13]
2018-11-01T06:46:30.901Z,paas-03,#011at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:799) [tomcat-coyote.jar:8.5.13]
2018-11-01T06:46:30.901Z,paas-03,#011at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:66) [tomcat-coyote.jar:8.5.13]
2018-11-01T06:46:30.901Z,paas-03,#011at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:861) [tomcat-coyote.jar:8.5.13]
2018-11-01T06:46:30.901Z,paas-03,#011at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49) [tomcat-coyote.jar:8.5.13]
2018-11-01T06:46:30.902Z,paas-03,#011at sun.nio.ch.SocketDispatcher.write(SocketDispatcher.java:47) ~[na:1.8.0_102]
2018-11-01T06:46:30.903Z,paas-03,#011at org.apache.tomcat.util.net.NioBlockingSelector.write(NioBlockingSelector.java:101) ~[tomcat-coyote.jar:8.5.13]
2018-11-01T06:46:30.904Z,paas-03,#011at org.apache.coyote.Response.doWrite(Response.java:518) ~[tomcat-coyote.jar:8.5.13]

"Connection reset by peer"는 현재 서버가 통신 쌍방이 보내는 TCP RST 신호를 받아들였다는 것을 나타냅니다. 즉, 통신 쌍방이 이미 연결을 닫았습니다. RST 신호를 통해 수신자가 연결을 닫기를 원합니다.
관련성이 매우 뚜렷한 서비스, 주동적으로 연결을 닫았는데, 나는 이것이 다음과 같은 상황이 존재할 수 있다고 생각했다.
1. 관련 서비스 오류 또는 충돌
2. 관련 서비스가 오랫동안 돌아오지 않는다. 예를 들어 데이터 조회 시간이 너무 길지만 시간 초과 시간을 설정하고 규정된 시간을 초과하여 연결을 닫는다.
관련 서비스의 로그를 보니 sql 조회 시간이 너무 긴 경우가 있습니다. 약 40초 동안 필터 조건을 늘려 보았더니 sql 조회 시간이 줄어들었고 상술한 버그가 나타나지 않았습니다.

좋은 웹페이지 즐겨찾기