博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
内核参数优化之1 keepalive解析
阅读量:6764 次
发布时间:2019-06-26

本文共 753 字,大约阅读时间需要 2 分钟。

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


 

  • 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分钟

转载于:https://www.cnblogs.com/aaa103439/p/3863838.html

你可能感兴趣的文章
docker基础
查看>>
MongoDB的安装与python操作MongoDB
查看>>
CF:The Fault in Our Cubes(DFS)
查看>>
[导入]WAP技术与网站建立
查看>>
STM32F4的sct文件理解
查看>>
6、消息发布和订阅功能
查看>>
P4233 射命丸文的笔记
查看>>
剑指offer-合并两个排序的链表
查看>>
SQLBulkCopy使用实例--读取Excel写入数据库/将 Excel 文件转成 DataTable
查看>>
企业分布式微服务云SpringCloud SpringBoot mybatis (五)路由网关(zuul)
查看>>
详解 MySQL 5.7 新的权限与安全问题
查看>>
大型网站技术架构(六)网站的伸缩性架构
查看>>
LA 3644 X-Plosives
查看>>
mysql8.0+修改用户密码
查看>>
android应用的响应性设计
查看>>
IOS设计模式浅析之单例模式(Singleton)
查看>>
Nosql数据库分类
查看>>
移动短信网关返回信息状态代码说明
查看>>
fis学习
查看>>
1250 Fibonacci数列
查看>>