Linux和Windows平台上tcp_keepalive_time、tcp_keepalive_intvl和tcp_keepalive_probes的配置
Tags: DCDOStcp_keepalive_intvltcp_keepalive_probestcp_keepalive_time
简介
在 Linux 中,tcp_keepalive_time
、tcp_keepalive_intvl
和 tcp_keepalive_probes
是与 TCP keepalive 相关的参数。
TCP keepalive 是一种机制,用于检测长时间处于空闲状态的 TCP 连接是否仍然处于活动状态。当一条 TCP 连接处于空闲状态时,操作系统会定期发送一些特殊的数据包,称为 keepalive 数据包,以确认对端是否仍然在线。如果一段时间内没有收到响应,操作系统就会判断连接已经失效,并关闭连接。
Linux
tcp_keepalive_time
: 表示 TCP keepalive 起用的时间,即当一条 TCP 连接在该时间内没有任何数据交互时,操作系统开始发送 keepalive 数据包。该值通常为 7200 秒(2 小时),可以根据需要调整。以秒为单位tcp_keepalive_intvl
: 表示操作系统发送 keepalive 数据包的间隔时间。该值通常为 75 秒,可以根据需要调整。tcp_keepalive_probes
: 表示发送 keepalive 数据包的最大次数。当这些次数用完后,操作系统将认为连接已经失效,并关闭连接。该值通常为 9 次,可以根据需要调整。如果发送9个keepalive探测包后对端仍然没有响应,就关掉这个连接
这些参数通常需要根据实际情况进行调整。如果 TCP 连接的空闲时间较长,可以增加 tcp_keepalive_time
的值。如果网络较不稳定,则可以减少 tcp_keepalive_intvl
和增加 tcp_keepalive_probes
的值,以保证连接不会轻易被关闭。
查看命令如下所示:
1 2 3 4 5 6 7 | [root@localhost ~]# cat /proc/sys/net/ipv4/tcp_keepalive_time 7200 [root@localhost ~]# cat /proc/sys/net/ipv4/tcp_keepalive_intvl 75 [root@localhost ~]# cat /proc/sys/net/ipv4/tcp_keepalive_probes 9 [root@localhost ~]# |
可以通过修改/etc/sysctl.conf永久生效