HTTP 和 TCP 的 KEEP ALIVE

先把结论放这:TCP 的 keepalive 和 HTTP 请求和响应的包头里的 keepalive 不是一回事。

TCP 的 keepalive 是用来检查 TCP 连接的对方是否还“活着”,Linux 有三个参数跟 keepalive 有关。

  • tcp_keepalive_time 一个连接闲了一定时间,就发 keepalive 的消息,这个时间长度是由 tcp_keepalive_time 来指定。
  • tcp_keepalive_probes 指定发送多少个 keepalive 探测包。如果对方回了 keepalive 探测包,说明对方还在,就继续保持这个连接。
  • tcp_keepalive_intvl 指定发送 keepalive 探测报的间隔时间。跟 tcp_keepalive_probes 相乘(发送多个 keepalive 探测包,对方没有响应),得到的就是从开始 keepalive 检查到放弃这个连接的时间。

HTTP 的 keepalive 是指客户端和 HTTP 服务端建立起 TCP 连接后,在这一个 TCP 连接上进行多次 HTTP 请求和响应,而不是建立 TCP 连接,请求,应答 HTTP,然后就断开 TCP 连接。建立、断开 TCP 的次数大大减少了,TCP 的连接数也减少了。

Subscribe to Atom

Don’t miss out on the latest issues. Sign up now to get access to the library of members-only issues.
jamie@example.com
Subscribe