`
zhaohongda33
  • 浏览: 85572 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

HttpClient 每次请求未close导致 Nginx connect failed (110- Connection timed out)

阅读更多

先说明一下问题:

 

      最近系统上线,系统使用HttpClient发送报文(会有循环发送情况)到外部系统通过nginx分发,这时nginx会报出connect failed (110- Connection timed out)错误(有一些请求报错,有一些不报,都是不定的),在网络中查到的答案大部分都说是因为系统内核错误,因为Nginx调用了gettimeofday()方法,但是我们通过编写C代码调用gettimeofday()方法进行测试,根本无法重现这个BUG,所以想到会不会是因为系统内部的错误。

 

     经过调查发现我们在使用HttpClient发送报文之后没有关闭连接,添加代码:

httpclient = new DefaultHttpClient(new ThreadSafeClientConnManager());

 

finally {
     if (httpclient != null && httppost != null){
				
	  // 释放连接资源
	  httppost.releaseConnection();
	  // 关闭Socket连接
	  httpclient.getConnectionManager().shutdown();
     }
}

   然后再经过一天一夜的测试发现没有再出现connect failed (110- Connection timed out)这个问题了。

 

   再说一下出现这个问题的猜测:

 

         系统内部(我们系统有定时器和主动发送)一直再创建新的httpclient连接并且没有关闭这个连接,一旦出现大量发送报文会导致系统与Nginx之间的等待的连接过多,这样会导致nginx分发出现问题,从而导致nginx报出Connection timed out,因为连接太多了,没有释放,而nginx主动释放连接是有时间的。

 

        这是我的猜测,能帮到你最好,如果不是这个问题,请帮忙回复一下,告诉我,我也好知道真相,非常感谢!

    

    希望我的这个文章能够帮到你们,如果有用,请点个赞,谢啦!

    也希望大家能够积极的发表文章能够实现知识共享。

   

 

     

2
3
分享到:
评论

相关推荐

    Software caused connection abort: recv failed

    标题:“Software caused connection abort: recv failed” 描述:“Software caused connection abort: recv failed” 知识点解析: ### 背景介绍 “Software caused connection abort: recv failed”这一错误...

    HttpClient异步请求

    本篇文章将深入探讨HttpClient的异步请求特性,以及如何使用它来发送GET和POST请求。 在Java中,同步请求会阻塞调用线程,直到服务器返回响应。然而,异步请求允许程序在等待响应的同时继续执行其他任务,提高了...

    java HttpClient 发送GET请求和带有表单参数的POST请求教程例子

    ### Java HttpClient 发送GET请求和带有表单参数的POST请求详解 #### 一、概述 在Java编程中,处理HTTP请求是一项常见的需求,特别是在与Web服务进行交互时。Apache HttpClient库提供了一种强大的方法来执行HTTP...

    httpcore-4.2.4,httpclient-4.2.5,httpclient-cache-4.2.5,httpmime-4.2.5的jar包下载

    这里提到的四个jar包——httpcore-4.2.4,httpclient-4.2.5,httpclient-cache-4.2.5,httpmime-4.2.5,都是Apache HttpClient库的不同组件,用于支持HTTP通信和相关功能。 **httpcore-4.2.4.jar** 是HTTP Core模块...

    C# 使用HttpClient模拟请求的案例

    除此之外,我们对请求添加签名的校验,key设置为X-Sign 接口定义 /// /// 获取时间戳(毫秒). /// /// <param name=dateTime></param> /// <returns></returns> [HttpPost] [AllowAnonymous]

    java调用net开发的webservice实例

    - I/O exception (java.net.ConnectException) caught when processing request: Connection timed out: connect - Retrying request - I/O exception (java.net.ConnectException) caught when processing request:...

    httpclient发送post请求

    而"httpclient-demo"项目则是一个客户端应用,它的任务是利用Apache HttpClient库来构建和发送POST请求到"post-demo"项目提供的接口。HttpClient库提供了丰富的API,允许开发者灵活地设置请求头、主体内容、超时等...

    httpclient-4.5.13-API文档-中文版.zip

    赠送jar包:httpclient-4.5.13.jar; 赠送原API文档:httpclient-4.5.13-javadoc.jar; 赠送源代码:httpclient-4.5.13-sources.jar; 赠送Maven依赖信息文件:httpclient-4.5.13.pom; 包含翻译后的API文档:...

    commons-httpclient-3.0.jar JAVA中使用HttpClient可以用到

    《JAVA中使用HttpClient:commons-httpclient-3.0.jar详解》 在JAVA开发中,进行HTTP请求时,Apache的HttpClient库是一个不可或缺的工具。本文将深入解析`commons-httpclient-3.0.jar`,它是HttpClient的一个重要...

    httpclient 4.X版本下载有的带源码包

    2013-11-21 15:31 292,890 httpclient-4.0.2.jar 2017-12-20 12:08 351,132 httpclient-4.1.1.jar 2012-08-03 01:45 451,595 httpclient-4.1.2-sources.jar 2012-08-03 01:44 352,254 httpclient-4.1.2.jar 2012-08-...

    对于C#(HttpClient)方式网络请求的封装

    4. **超时设置**:可能会提到如何设置请求超时,以防止因服务器响应过慢导致程序阻塞。 5. **异步编程**:由于Unity游戏引擎推荐使用异步操作以避免阻塞主线程,所以会涉及使用async/await关键字来实现非阻塞的网络...

    httpClient组合包.zip

    1. **httpclient-4.5.10.jar**:这是HttpClient的主要实现库,提供了完整的HTTP请求和响应处理功能。它包括了各种HTTP方法(如GET、POST、PUT等)、重定向处理、Cookie管理、身份认证以及连接管理等功能。版本4.5.x...

    commons-httpclient-3.1jar包

    《Apache Commons HttpClient 3.1详解》 Apache Commons HttpClient 是一个功能强大的Java库,专为实现客户端HTTP通信而设计。这个3.1版本是HttpClient的一个重要里程碑,它提供了丰富的功能和改进,使得开发者能够...

    httpclient post方式发送请求

    在Java编程中,HTTPClient库是一个非常常用的工具,用于发送HTTP请求,包括POST方式的请求。本篇文章将详细讲解如何使用HTTPClient库以POST方式发送JSON格式的数据,并介绍相关依赖包。 首先,为了使用HTTPClient库...

    使用HttpClient异步请求数据

    在这个场景下,`ConnectionServlet`可能负责接收`HttpClient`发送的GET或POST请求,处理后返回数据。 文件`4.8通过HttpClient异步请求数据`可能是一个示例代码或教程,讲述了如何在Android应用的4.8版本中使用`...

    java实现HttpClient异步请求资源的方法

    本篇文章将详细介绍如何使用Java的HttpClient实现异步请求资源。 首先,让我们了解什么是异步请求。在同步请求中,调用一个API或发送一个HTTP请求后,程序会等待响应返回,然后继续执行后续代码。而异步请求则不同...

    HttpClient问题:The server failed to respond with a valid HTTP resp

    比如超时设置过短,服务器未在规定时间内返回响应,HttpClient就会认为响应无效。可以适当增加连接超时和读取超时时间: ```java RequestConfig config = RequestConfig.custom() .setConnectTimeout(10000) // ...

    httpclient-4.5jar

    httpclient-4.5所需jar包,里面包含httpclient-4.5.jar等等10个必须的开发包。 1.commons-codec-1.9.jar 2.commons-logging-1.2.jar 3.fluent-hc-4.5.jar 4.httpclient-4.5.jar 5.httpclient-cache-4.5.jar 6....

    httpclient 跨域请求

    现在,我们将深入探讨如何使用`httpclient`进行跨域请求,并结合`fastjson`处理数据。 首先,理解跨域请求的概念至关重要。由于同源策略的限制,JavaScript通常只能访问与当前页面相同协议、域名和端口的资源。若要...

    httpclient-4.5.6-API文档-中文版.zip

    赠送jar包:httpclient-4.5.6.jar; 赠送原API文档:httpclient-4.5.6-javadoc.jar; 赠送源代码:httpclient-4.5.6-sources.jar; 赠送Maven依赖信息文件:httpclient-4.5.6.pom; 包含翻译后的API文档:httpclient...

Global site tag (gtag.js) - Google Analytics