概念

1. 什么是Keep-Alive模式?

我们知道HTTP协议采用“请求-应答”模式,当使用普通模式,即非KeepAlive模式时,每个请求/应答客户和服务器都要新建一个连接,完成之后立即断开连接(HTTP协议为无连接的协议);当使用Keep-Alive模式(又称持久连接、连接重用)时,Keep-Alive功能使客户端到服务器端的连接持续有效,当出现对服务器的后继请求时,Keep-Alive功能避免了建立或者重新建立连接。.

  • close:短连接,每次请求都建立一个TCP连接
  • Keep-Alive:长链接,使浏览器可以在一个TCP/IP连接中做多次请求,性能更高;chrome允许并发的TCP连接数是6
  • HTTP1.0默认false,HTTP1.1默认是keep-alive
  • HTTP2信道复用,可以在一个TCP连接上并发同域请求

    2. 连接池

    其实“池”技术是一种通用的设计,其设计思想并不复杂:
  1. 当有连接第一次使用的时候建立连接
  2. 结束时对应连接不关闭,归还到池中
  3. 下次同个目的的连接可从池中获取一个可用连接
  4. 定期清理过期连接

    3. http连接池缺点

    1.复用http连接,省去了tcp的3次握手和4次挥手的时间,极大降低请求响应的时间
    2.自动管理tcp连接,不用人为地释放/创建连接

1.http连接池不是万能的,过多的长连接会占用服务器资源,导致其他服务受阻
2.http连接池只适用于请求是经常访问同一主机(或同一个接口)的情况下
3.并发数不高的情况下资源利用率低下

参考文章

  1. https://www.cnblogs.com/kingszelda/p/8988505.html
  2. https://www.jianshu.com/p/c852cbcf3d68
  3. https://github.com/Arronlong/httpclientutil