zoukankan      html  css  js  c++  java
  • http keep-alive与tcp keep-alive

    http keep-alive与tcp keep-alive

    http keep-alive与tcp keep-alive,不是同一回事,意图不一样。http keep-alive是为了让tcp活得更久一点,以便在同一个连接上传送多个http,提高socket的效率。而tcp keep-alive是TCP的一种检测TCP连接状况的保鲜机制。tcp keep-alive保鲜定时器,支持三个系统内核配置参数:

    1 echo 1800 > /proc/sys/net/ipv4/tcp_keepalive_time
    2 echo 15 > /proc/sys/net/ipv4/tcp_keepalive_intvl
    3 echo 5 > /proc/sys/net/ipv4/tcp_keepalive_probes

    keepalive是TCP保鲜定时器,当网络两端建立了TCP连接之后,闲置idle(双方没有任何数据流发送往来)了tcp_keepalive_time后,服务器内核就会尝试向客户端发送侦测包,来判断TCP连接状况(有可能客户端崩溃、强制关闭了应用、主机不可达等等)。如果没有收到对方的回答(ack包),则会在 tcp_keepalive_intvl后再次尝试发送侦测包,直到收到对对方的ack,如果一直没有收到对方的ack,一共会尝试 tcp_keepalive_probes次,每次的间隔时间在这里分别是15s, 30s, 45s, 60s, 75s。如果尝试tcp_keepalive_probes,依然没有收到对方的ack包,则会丢弃该TCP连接。TCP连接默认闲置时间是2小时,一般设置为30分钟足够了。

    也就是说,仅当nginx的keepalive_timeout值设置高于tcp_keepalive_time,并且距此tcp连接传输的最后一个http响应,经过了tcp_keepalive_time时间之后,操作系统才会发送侦测包来决定是否要丢弃这个TCP连接。一般不会出现这种情况,除非你需要这样做。

  • 相关阅读:
    webim-界面细节调整
    使用PHP得到所有的HTTP请求头_还有应答头
    Bootstrap学习的点点滴滴
    asterisk中eyebeam与移动的IMS帐号对接
    总结Ajax跨域调用问题
    Spring【基础】-注解-转载
    Spring-【高阶】注解-转载
    让你的IDEA倍爽
    IDEA的git密码修改
    Idea设置签名
  • 原文地址:https://www.cnblogs.com/zhouj-happy/p/12591281.html
Copyright © 2011-2022 走看看