org.apache.http.conn.ConnectionPoolTimeoutException: Timeout waiting for connection from pool

这篇具有很好参考价值的文章主要介绍了org.apache.http.conn.ConnectionPoolTimeoutException: Timeout waiting for connection from pool。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

Java HttpUtil 出现错误:org.apache.http.conn.ConnectionPoolTimeoutException: Timeout waiting for connection from pool

        最近项目中大量调用http请求,线上出现了ConnectionPoolTimeoutException 这个问题,但是本地服务器一直没能复现出来,但是定位问题应该是之前调用http的工具类封装的有问题,连接池设置的不对,但是一看目前项目中设置的数据和网上的大相径庭,以下是部分设置:

clientConnectionManager.setMaxTotal(300);
clientConnectionManager.setDefaultMaxPerRoute(30);
clientConnectionManager.setValidateAfterInactivity(1000);
private static final RequestConfig defaultRequestConfig = RequestConfig.custom()
        .setSocketTimeout(3000)
        .setConnectTimeout(3000)
        .setConnectionRequestTimeout(3000)
        .build();

在网上找了一些资料后,发现应该是调用接口这里处理的有问题

if (response.getStatusLine().getStatusCode() == HttpStatus.SC_OK) {
            // 请求成功状态
            String resultMsg = String.join("", IOUtils.readLines(response.getEntity().getContent(), StandardCharsets.UTF_8));
            logger.info("httpClient 请求返回结果: {}", resultMsg);
            return resultMsg;
        }

这里的原因就是如果状态码返回了非200,即使用了连接池,也不会释放连接。本地用工具调用一个返回404的地址,果然在超过30个请求后,开始报错了,然后连接池阻塞卡死了。问了现场之后发现现场也是有个接口访问不到,一直返回404,定位到问题了,剩下的就是改写代码让出现异常的时候仍然释放连接。

参考了以下的博客进行解决:

HttpClient大并发下Timeout waiting for connection from pool 问题解决方案_独行-浪子的博客-CSDN博客文章来源地址https://www.toymoban.com/news/detail-539104.html

到了这里,关于org.apache.http.conn.ConnectionPoolTimeoutException: Timeout waiting for connection from pool的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • wait_timeout and interactive_timeout 参数

    非交互模式连接:通常情况下,应用到RDS实例会采用非交互模式,具体采用哪个模式需要查看应用的连接方式配置,比如PHP通过传递MYSQL_CLIENT_INTERACTIVE常量给mysql_connect()函数即可开启连接的交互模式。wait_timeout参数控制非交互模式连接的超时时间(单位秒,默认值为24小时即

    2024年02月08日
    浏览(40)
  • org.apache.tomcat.util.http.fileupload.impl.FileSizeLimitExceededException

    问题描述: org.apache.tomcat.util.http.fileupload.impl.FileSizeLimitExceededException: The field image exceeds its maximum permitted size of 1048576 bytes. 问题场景: web 项目,接口传入 文件参数(1.3MB) 问题分析解决: 在 Spring Boot 项目中,可以通过配置文件来设置上传文件的大小限制。默认情况下,Sp

    2024年04月23日
    浏览(102)
  • Tomcat:org.apache.coyote.http11.Http11Processor.service 解析 HTTP 请求 header 错误

    注意其中:HTTP请求解析错误 将 https 改成 http 即:http://localhost:8080/ (其中8080根据自己配置来更改,tomcat默认是8080) 修改后: 成功!! 具体原因俺也不造,欢迎友友们指教,多谢!! Tomcat与http有协议

    2024年02月11日
    浏览(41)
  • org.apache.hc.client5.http.async.methods.SimpleRequestBuilder

    使用阿里云发送短信时,使用response.get()方法报错 加入以下maven依赖:

    2024年02月14日
    浏览(45)
  • mysql 设置wait_timeout连接等待时间

    扩展阅读wait_timeout 是mysql在关闭一个非交互的连接之前所要等待的秒数,其取值范围为1-2147483(Windows),1-31536000(linux),默认值28800。 1. 查询当前mysql连接等待时间(wait_timeout) 如果前期没有设置wait_timeout的时间默认时间28800 2. 在数据库配置文件内加上wait_timeout设置 mysql 5以上的

    2024年02月11日
    浏览(36)
  • mysql Lock wait timeout exceeded; try restarting transaction

    当在业务逻辑中看到这个错误,或者mysql中使用update语句更新数据报错: Lock wait timeout exceeded; try restarting transaction。也就是遇到了mysql死锁,等待资源,事务锁的问题。 可能原因:意外处理没有关闭连接,导致连接过多、或是要更新的表的锁在其它线程手里、系统异常导致事

    2024年02月17日
    浏览(41)
  • 【Mysql】Lock wait timeout exceeded; try restarting transaction

     出现这种问题通常是有事务长时间未提交导致的 可以使用以下sql 查询事务进程 然后通过  kill 线程ID 的方式 ,结束该事务

    2024年02月07日
    浏览(39)
  • MySQL:MySQLTransactionRollbackException - Lock wait timeout exceeded; try restarting transaction

    “Lock wait timeout exceeded; try restarting transaction” 一般出现这样的错误时,往往是因为一些事务在等待获取某个锁,但由于这个锁被其他长时间未完成的事务持有,所以导致等待超时。 SHOW FULL PROCESSLIST; 显示当前MySQL中的所有进程信息,包括每个进程的ID、用户、主机、数据库、

    2024年02月16日
    浏览(41)
  • org.apache.http.ConnectionClosedException Premature end of Content-Length delimited message body

    最近生产环境报了这个系统异常: org.apache.http.ConnectionClosedException Premature end of Content-Length delimited message body (expected 107915; received 40177) 查看日志后发现是下载文件的时候出错。 具体的代码如下: 在向威富通发送请求的时候有下载文件的操作,出现了该问题。 起初是怀疑htt

    2024年02月02日
    浏览(50)
  • org.apache.coyote.http11.Http11Processor.service 解析 HTTP 请求 header 错误注意:HTTP请求解析错误的进一步发生将记录在DEBUG级别。

    运行tomcat时,本以为成功了  结果,突然出现这两个错误 org.apache.coyote.http11.Http11Processor.service 解析 HTTP 请求 header 错误注意:HTTP请求解析错误的进一步发生将记录在DEBUG级别。     java.lang.IllegalArgumentException: 在方法名称中发现无效的字符串, HTTP 方法名必须是有效的符号.  

    2024年02月11日
    浏览(44)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包