美文网首页
es JestClientFactory 使用的http连接池解

es JestClientFactory 使用的http连接池解

作者: 邵红晓 | 来源:发表于2021-05-14 17:11 被阅读0次
    • 使用同步update api,查看源码发现使用httpclient4.5.6PoolingHttpClientConnectionManager
    • com.arronlong.httpclientutil 中封装的http连接池同样使用的 httpclient4.5.6中 PoolingHttpClientConnectionManager
    • 提醒 springboot默认集成的jest,无法设置maxTotalConnection,默认20会造成连接数不足,影响生产

    PoolingHttpClientConnectionManager核心参数解释和设置

    • maxTotalConnection:单个连接池实例能允许的最大连接数
    • defaultMaxTotalConnectionPerRoute: 单个路由的最大连接数,一个ip:port就是一个路由,比如www.baidu.com,www.google.com,就表示两个路由,在es中配置单路由连接数应该和最大连接数据相等或者小于,也就是说发起服务的主机连接到路由的最大连接数,也就是并发量
    • connTimeout ms 连接超时时间,客户端请求服务器与服务器建立连接(三次握手)成功的最大接受时间
    • readTimeout(socketTimeout) ms 请求获取数据的超时时间,访问一个接口指定时间内无法返回数据,直接放弃此次调用
    • maxConnectionIdleTime 连接池中连接的最大空闲时间

    连接池取连接

    连接池中获取连接时从org.apache.http.pool.AbstractConnPool#getPoolEntryBlocking,改方法时同步方法,需要预先获取锁,http连接存储在LinkedList中

    使用连接池的好处

    因为使用它可以有效降低延迟和系统开销。如果不采用连接池,每当我们发起http请求时,都需要重新发起Tcp三次握手建立链接,请求结束时还需要四次挥手释放链接。而链接的建立和释放是有时间和系统开销的。另外每次发起请求时,需要分配一个端口号,请求完毕后在进行回收。
    使用链接池则可以复用已经建立好的链接(长连接),一定程度的避免了建立和释放链接的时间开销。

    参考
    https://zhuanlan.zhihu.com/p/340576167

    相关文章

      网友评论

          本文标题:es JestClientFactory 使用的http连接池解

          本文链接:https://www.haomeiwen.com/subject/aliqjltx.html