是什么导致我java。网。异常:连接的重置?[重复]
-
06-09-2019 - |
题
这个问题已经有一个答案在这里:
- java。网。异常:连接的重置 9答案
我们看到频繁,但是间歇的 java.net.SocketException: Connection reset
错误在我们的日志。我们不确定那里的 Connection reset
错误是实际上来自何处,如何去调试。
该问题似乎是无关的消息,我们正在试图发送。注意到消息 不 connection reset by peer
.
任何建议,关于什么典型的原因的这一例外可能是,及我们如何可能继续吗?
这里是一个具有代表性的堆的跟踪(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)
我们的组件是一个网络应用程序运行在Tomcat,呼吁第三方网服务发送短信,它如此发生。行的我们的代码在哪些例外被甩是最后一行中的代码如下。
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的水平。
其他提示
这个错误 发生在你身边 不另一边。如果其他侧重连接,那么异常的消息应该说:
java.net.SocketException reset by peer
原因是连接的内部 HttpClient
是陈旧。检查陈旧的连接SSL不修复这个错误。方案:甩了你的客户和重建。
如果你的经验,这一试图访问网服务部署在Glassfish3服务器,可能要调http线的游泳池的设置。这一固定SocketExceptions我们当中许多并行线打电话网服务。
- 转到管理控制台
- 浏览"配置"->"服务器的配置"->"线池"->"http线池"。
- 改变设定"最大线的游泳池的尺寸",从5个到32
- 改变设置"Min线的游泳池的尺寸"2至16
- 重新启动我们.
我也偶然发现这一错误。在我的情况下,问题是我用的是JRE6,支持 TLS1.0.服务器只能支持TLS1.2,所以这种错误被抛出。
在我的情况下,这是因为我Tomcat设置与不足 maxHttpHeaderSize
对于一个特别复杂的SOLR查询。
希望这可以帮助别人在那里!
我得到这个错误所有的时间,并认为这是正常的。
它发生时,一个侧试图读时其他方面已经挂了。因此 根据该协议,这可能或不可能指定的一个问题.如果我的客户代码的具体指示的服务器,这是要挂电话了,然后这两个客户和服务器可以挂在同一时间和这个消息不会发生。
我执行我的代码被用于客户,只是挂起来不用说再见。然后,服务器可以赶上的错误,并忽视它。在该上下文中HTTP,我相信一级的协议允许一个以上的请求每个连接,而其他没有。
因此你可以看到如何能一边可以把吊起来。我怀疑的错误你都接受的任何关注海盗和你可以简单地抓住它,以保持它填补了你的记录文件。
这一错误发生在服务器上面的时候客户关闭插座连接之前的响应可能返回的在座。在一个网络应用程序的情况并不是所有的这些都是危险的,因为它们可以手动创建。例如,通过退出的浏览器之前的反应是检索。
异常意味着插座是意外关闭的另一面。因为你呼叫一个网服务,这不应该发生最有可能你发送一个请求,即触发了一个错误的网服务。
尝试记录整个请求在这些情况下,看看如果你注意到什么不寻常的。否则,取得了联系网服务提供商和向他们发送你的记录问题的请求。
我知道这线是有点老,但想补充我的2美分。我们有相同的"连接的重置"的错误后,我们的一个版本。
根本原因是,我们的 apache
服务器被带进行部署。我们所有的第三方的交通走过 apache
和我们越来越接重的错误因为它正在下降。
这是一个旧线,但我跑进 java.net.SocketException: Connection reset
昨天。
服务器的端应用程序有其限制设置,改变了只允许1个连接在一段时间!因此,有时要求就通过和有时不是。我解决了这个问题通过改变限制设置。
我得到完全的错误: Connection reset by peer
.唯一的例外是被提出的春天休息的模板在运行 postForObject()
法。我的问题是太长HTTP请求。所以第一次检查是否URL生产是它应该是什么,如果你服务真的应该能够处理请求的长度,简单地转到服务器的结构和提高默认允许长度的URL请求。
这解决了这个问题对于我,但要注意:该应用程序可能无法运行在一些互联网浏览器,尤其是旧的,因为他们有固定的最长的网址的请求。
希望它能帮助...
我得到这个错误时的文本文件中,我试图阅读载有一串匹配的防病毒软件上的签名我们的防火墙。
总的来说,我得到这一错误的时候我是不小心让一让请求的端点,这是期待一个员额的请求。大概是那只是特定服务的方式处理该问题。
我得到这一错误,因为港口我尝试连接到被关闭。