美文网首页
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