• 内核参数优化之1 keepalive解析


    以下信息纯属虚构,切勿相信!


    • tcp/ip协议中有一个keep-alive机制,即检查空连接的时效性,当一个空连接持续一段时间后,就会发送一个keep-alive探测包,来探测客户端是否还存在.
      • 如果存在,则客户端返回一个ack报文
      • 如果存在,但构建连接的应用程序已经推出,则客户端返回一个rst报文,并发送fin报文撤销连接
      • 如果存在,但构建连接的应用程序已经崩溃,则客户端返回一个fin报文,直接撤销连接
      • 如果不响应任何报文,则顾名思义,服务器就会主动撤销连接.不过在撤销连接前,服务器会发送多少个探测包,每个探测包间隔多少秒呢?就看下面的参数了
    • net.ipv4.tcp_keepalive_time
      • 意思是一个已知连接空闲了多久,默认时间是7200秒,即2小时,这个值是很大的,因为如果对方空连接攻击,就很恶心了,所以建议修改为1800秒
    • net.ipv4.tcp_keepalive_probes
      • 意思就是tcp在空闲时间结束后,发送几个探测报,默认是9个,根据情况,为了释放资源,我们应该缩短这个次数,所以建议5次以下,比如3次
    • net.ipv4.tcp_keepalive_intvl
      • 意思是每个探测报文的间隔时间,默认是75秒,这里也建议缩短,因为间隔时间是75秒*发送的报文次数=无活动连接到撤销连接所用的时间,所以建议20秒.

    OK, 经过这三个参数的调整,现在的tcp/ip检测空连接的效果是
    1. 每一个空连接可以保持1800秒(30分钟)
    2. 当空闲时间结束后,服务器会每20秒发送一个探测报文,共计发送3个
    3. 如果依然没有活动,则断开.所以空连接总占用时间为31分钟

    [星空刺] |-->一颗星辰一闪即逝,支撑它的唯有方向和目的
  • 相关阅读:
    POJ 1026 Cipher(置换群)
    POJ 1691 Painting A Board(DFS)
    URAL 1073 Square Country(DP)
    Spring Boot系列教程三:使用devtools实现热部署
    Spring Boot系列教程二:创建第一个web工程 hello world
    Spring Boot系列教程一:Eclipse安装spring-tool-suite插件
    java实现二叉树的构建以及3种遍历方法
    二叉树的java实现
    各种数据库的分页查询语句
    sql语句查询各门课程平均分的最大值
  • 原文地址:https://www.cnblogs.com/aaa103439/p/3863838.html
Copyright © 2020-2023  润新知