빈번하지만 간헐적으로 java.net.SocketException: 연결 재설정
오류가 로그에 자주 기록됩니다. 연결 재설정` 오류가 실제로 어디서 발생하는지, 디버깅을 어떻게 진행해야 하는지 잘 모르겠습니다.
이 문제는 저희가 전송하려는 메시지와는 관련이 없는 것으로 보입니다.
해당 메시지는 피어에 의한 연결 재설정
이 아니라는 점에 유의하세요.
이 예외의 일반적인 원인과 해결 방법에 대한 제안이 있으신가요?
다음은 대표적인 스택 추적입니다(com.companyname.mtix.sms
가 저희 컴포넌트입니다):
java.net.SocketException: Connection reset at java.net.SocketInputStream.read(SocketInputStream.java:168) at java.io.BufferedInputStream.fill(BufferedInputStream.java:218) at java.io.BufferedInputStream.read(BufferedInputStream.java:235) at org.apache.commons.httpclient.HttpParser.readRawLine(HttpParser.java:77) at org.apache.commons.httpclient.HttpParser.readLine(HttpParser.java:105) at org.apache.commons.httpclient.HttpConnection.readLine(HttpConnection.java:1115) at org.apache.commons.httpclient.HttpMethodBase.readStatusLine(HttpMethodBase.java:1832) at org.apache.commons.httpclient.HttpMethodBase.readResponse(HttpMethodBase.java:1590) at org.apache.commons.httpclient.HttpMethodBase.execute(HttpMethodBase.java:995) at org.apache.commons.httpclient.HttpMethodDirector.executeWithRetry(HttpMethodDirector.java:397) at org.apache.commons.httpclient.HttpMethodDirector.executeMethod(HttpMethodDirector.java:170) at org.apache.commons.httpclient.HttpClient.executeMethod(HttpClient.java:396) at org.apache.commons.httpclient.HttpClient.executeMethod(HttpClient.java:324) at com.companyname.mtix.sms.services.impl.message.SendTextMessage.sendTextMessage(SendTextMessage.java:127) at com.companyname.mtix.sms.services.MessageServiceImpl.sendTextMessage(MessageServiceImpl.java:125) at com.companyname.mtix.sms.services.remote.MessageServiceRemoteImpl.sendTextMessage(MessageServiceRemoteImpl.java:43) at sun.reflect.GeneratedMethodAccessor203.invoke(Unknown Source) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) at java.lang.reflect.Method.invoke(Method.java:585) at org.apache.axis.providers.java.RPCProvider.invokeMethod(RPCProvider.java:397) at org.apache.axis.providers.java.RPCProvider.processMessage(RPCProvider.java:186) at org.apache.axis.providers.java.JavaProvider.invoke(JavaProvider.java:323) at org.apache.axis.strategies.InvocationStrategy.visit(InvocationStrategy.java:32) at org.apache.axis.SimpleChain.doVisiting(SimpleChain.java:118) at org.apache.axis.SimpleChain.invoke(SimpleChain.java:83) at org.apache.axis.handlers.soap.SOAPService.invoke(SOAPService.java:453) at org.apache.axis.server.AxisServer.invoke(AxisServer.java:281) at org.apache.axis.transport.http.AxisServlet.doPost(AxisServlet.java:699) at javax.servlet.http.HttpServlet.service(HttpServlet.java:709) at org.apache.axis.transport.http.AxisServletBase.service(AxisServletBase.java:327) at javax.servlet.http.HttpServlet.service(HttpServlet.java:802) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:252) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173) at com.companyname.mtix.sms.http.filters.NoCacheFilter.doFilter(NoCacheFilter.java:63) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:202) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173) at com.companyname.mtix.sms.http.filters.MessageFilter.doFilter(MessageFilter.java:53) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:202) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173) at org.springframework.web.filter.RequestContextFilter.doFilterInternal(RequestContextFilter.java:61) at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:77) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:202) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173) at org.ajaxanywhere.AAFilter.doFilter(AAFilter.java:46) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:202) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173) at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:213) at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:178) at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:126) at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:105) at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:541) at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:107) at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:148) at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:869) at org.apache.coyote.http11.Http11BaseProtocol$Http11ConnectionHandler.processConnection(Http11BaseProtocol.java:664) at org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(PoolTcpEndpoint.java:527) at org.apache.tomcat.util.net.LeaderFollowerWorkerThread.runIt(LeaderFollowerWorkerThread.java:80) at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:684) at java.lang.Thread.run(Thread.java:595) </pre>
이 컴포넌트는 Tomcat에서 실행되는 웹 애플리케이션으로, SMS 메시지를 전송하는 타사 웹 서비스를 호출합니다. 예외가 발생하는 코드 줄은 아래 코드 스니펫의 마지막 줄입니다.
String aggregatorResponse = null; HttpClient httpClient = prepareHttpClient( username, password ); PostMethod postMethod = preparePostMethod( textUrl ); try { SybaseTextMessageBuilder builder = new SybaseTextMessageBuilder(); URL notifyUrl = buildNotificationUrl( textMessage, codeSetManager ); String smsRequestDocument = builder.buildTextMessage( textMessage, notifyUrl ); LOG.debug( "Sybase MT document created as: \n" + smsRequestDocument ); postMethod.setRequestEntity( new StringRequestEntity( smsRequestDocument ) ); LOG.debug( "commiting SMS to aggregator: " + textMessage.toString() ); int httpStatus = httpClient.executeMethod( postMethod );
소켓 예외에 대한 자바 문서에는 다음과 같이 명시되어 있습니다.
TCP 오류와 같은 기본 프로토콜에 오류가 있음을 나타내기 위해 던져집니다.
귀하의 경우 연결의 서버 측에서 연결을 닫은 것 같습니다. 이는 보내는 요청에 문제가 있거나 서버 측의 문제일 수 있습니다.
디버깅을 돕기 위해 와이어샤크와 같은 도구를 사용하여 실제 네트워크 패킷을 확인할 수 있습니다. 또한 웹 서비스를 테스트하는 데 사용할 수 있는 Java 코드의 대체 클라이언트가 있나요? 테스트에 성공했다면 Java 코드에 버그가 있을 수 있습니다.
커먼 HTTP 클라이언트를 사용 중이라면 커먼 HTTP 클라이언트 로깅 가이드를 참조하세요. 여기에는 HTTP 수준에서 요청을 로깅하는 방법이 설명되어 있습니다.
이 오류는 네 편이야 일이 아니라 다른 쪽. The other side 재설정하십시오 경우 연결, 다음 idfsysobject. 메시지에서 기도하라주여
java.net.SocketException reset by peer
그 원인은 '는' 연결 인사이드라면 하테프클리나 오래되었는가. 확인란 오래되었는가 해결되지 않을 경우 SSL 연결 오류입니다. 해결책: 고객 및 덤프합니다 재생성하려고.
이 경우 액세스하려는 배포시키고 Glassfish3 있는 서버, 웹 서비스 경험을 할 수 있습니다 너회의 튜닝합니다 http 스레드 풀 꾸미기야. 그 때 당시 많은 동시 스래드입니다 웹 서비스 호출하십시오 고정식입니다 소켓렉스티언스 있었습니다.
내가 이 오류를 빛위에 자신하고 있다. 저의 경우는 문제가 있었는데 JRE6 사용하여 지원할 수 있는 TLS1.0. 때문에 이 오류는 버린 TLS1.2 서버에서 사용할 수 있습니다.
난 항상 afaq afnor 오류 및 it 고려해보십시오 않았다.
이 때 읽을 때 어떻게 하면 어느 한 쪽이 다른 곳으로 이미 hung up. 이에 따라 이 문제가 포로토콜 designate 않을 수도 있습니다. 만약 내 클라이언트 코드가 것인지 알 수 있는 서버를 위해 특별히 클라이언트와 서버 모두 끊어 관심용 끊지 않을 수 있으며, 이 메시지를 동시에 일어날 수 있습니다.
The way I 구현하십시오 그냥 끊지 않고 내 코드는 클라이언트에 대한 매형두요 한다 "고 말했다. 그런 다음 강한 서버 오류 및 무시합니다. Http 프로토콜을 통해 한 단계, I believe in the 컨텍스트로 연결당 doesn& # 39, 반면 다른 둘 이상의 요청을 하지 않을 수 없다.
이에 따라 어떻게 유지할 수 있게 한 면을 볼 수 있는 내어쓰기는 up on the other. 내가 수신할 수 있는 모든 것에 대한 오류 틀렸다니까 해적인 염려사항 진실이며당신이 keep it up your 로그 파일을 채워지는 것이 이를 잘 됩니다.
이 세 싶은 마음이 있지만 추가 그러니까말이야 리틀이에요 내 2 센트. 우리는 경식도 동일한 " 연결 reset"; 오류 중 하나가 직후 우리 릴리즈합니다.
Apache '우리' 는 서버 구축을 위한 낮춰 근본 원인이 되었다. 제 3 자 '와' 을 통해 우리는 우리의 모든 연결 재설정 오류 때문에 apache 트래픽으로부터 댁이라면 가져오는 기술입니까 아래에있어.
I was getting 정확히요 오류가 너무: '연결이 재설정됨 피어'. # 39 는 예외) 의 실행 중인 Spring& 제기했나요 빛위에 미삭 템플리트를 포스트포로비치 () '' 메서드입니다. 나를 위해 HTTP 요청 url 이 문제를 너무 깁니다. 그래서 먼저 해야 할 경우, 정말 뭐가 있는지 여부를 확인하고 uirl 생산된 서버에서 처리할 수 있어야 하는데, 단순히 gnu. orghttp://www. server& # 39 에 해당하는 길이의 요청률 올리고 URL 요청률 허용됩니까 길이 기본 구성.
그러나 문제를 해결한 가져다줄래요 염두에 두어야 합니다. 일부 응용 프로그램을 실행할 수 없습니다, 특히 기존 인터넷 브라우저에 URL 요청률 고정식입니다 최대 길이 있기 때문에.
희망을 줍니다.