Linux和Windows平台上tcp_keepalive_time、tcp_keepalive_intvl和tcp_keepalive_probes的配置

0    133    2

Tags:

👉 本文共约2445个字,系统预计阅读时间或需10分钟。

简介

在 Linux 中,tcp_keepalive_timetcp_keepalive_intvltcp_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 的值,以保证连接不会轻易被关闭。

查看命令如下所示:

可以通过修改/etc/sysctl.conf永久生效

Windows

KeepAliveTime

  KeepAliveTime的值控制系统尝试验证空闲连接是否仍然完好的频率。如果该连接在一段时间内没有活动,那么系统会发送保持连接的信号,如果网络正常并且接收方是活动的,它就会响应。如果需要对丢失接收方的情况敏感,也就是说需要更快地发现是否丢失了接收方,请考虑减小该值。而如果长期不活动的空闲连接的出现次数较多,但丢失接收方的情况出现较少,那么可能需要增大该值以减少开销。

  缺省情况下,如果空闲连接在7200000毫秒(2小时)内没有活动,系统就会发送保持连接的消息。 通常建议把该值设为1800000毫秒,从而丢失的连接会在30分钟内被检测到。具体操作:

  浏览至HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\TCPIP\Parameters注册表子键,在Parameters子键下创建或修改名为KeepAliveTime的REG_DWORD值,为该值设置适当的毫秒数(右键单击并选择新建 -> DWORD(32位)值。)。例如,如果要将Keep-Alive时间设置为2小时,则将其值设置为7200000(2小时x60分钟x60秒x1000毫秒)。

KeepAliveInterval

  KeepAliveInterval的值表示未收到另一方对“保持连接”信号的响应时,系统重复发送“保持连接”信号的频率。在无任何响应的情况下,连续发送“保持连接”信号的次数超过TcpMaxDataRetransmissions(下文将介绍)的值时,将放弃该连接。如果网络环境较差,允许较长的响应时间,则考虑增大该值以减少开销;如果需要尽快验证是否已丢失接收方,则考虑减小该值或TcpMaxDataRetransmissions值。

本人提供Oracle(OCP、OCM)、MySQL(OCP)、PostgreSQL(PGCA、PGCE、PGCM)等数据库的培训和考证业务,私聊QQ646634621或微信dbaup66,谢谢!
AiDBA后续精彩内容已被站长无情隐藏,请输入验证码解锁本文!
验证码:
获取验证码: 请先关注本站微信公众号,然后回复“验证码”,获取验证码。在微信里搜索“AiDBA”或者“dbaup6”或者微信扫描右侧二维码都可以关注本站微信公众号。

标签:

Avatar photo

小麦苗

学习或考证,均可联系麦老师,请加微信db_bao或QQ646634621

您可能还喜欢...

发表回复