zoukankan      html  css  js  c++  java
  • HttpClient报错Timeout waiting for connection from pool

    报错现象

    线上项目使用HttpClient请求第三方的HTTP资源,并发量高的时候,日志框报Timeout waiting for connection from pool

    客户端的现象是有时正常,有时报错

     

    原因分析

    网上查找资料,很多照搬某个博客的解决方法,大致是合理的使用EntityUtils.consume及时释放请求连接

    这个说法没错,但是这里的问题不是请求连接释放不当导致的

    出现这个异常是因为新的请求来的时候,需要到HttpClient的线程池里面获取一个连接,作为请求连接

    当请求等待获取连接的时间超过设置的connectionRequestTimeout,就会抛出Timeout waiting for connection from pool异常

    解决方法

    1. 合理的配置HttpClient的连接池大小

    clientBuilder.setMaxConnTotal(maxConnections);

    2. 结合业务现状配置连接超时时间

    RequestConfig.custom().
    setConnectTimeout(connectTimeout).
    setSocketTimeout(readTimeout).
    .setConnectionRequestTimeout(connectionRequestTimeout).build();
  • 相关阅读:
    【bzoj3211】花神游历各国
    四维偏序(K-D-Tree+rebuild)
    【bzoj3295】动态逆序对
    BZOJ3444: 最后的晚餐
    BZOJ3091: 城市旅行
    BestCoder Round #72
    BZOJ2733: [HNOI2012]永无乡
    wc2016总结
    BZOJ4381: [POI2015]Odwiedziny
    BZOJ4196: [Noi2015]软件包管理器
  • 原文地址:https://www.cnblogs.com/changxy-codest/p/13111032.html
Copyright © 2011-2022 走看看