在 Linux 中设置自定义 TCP/IP Keep Alive 参数

如何在 Linux 中更改 Keep Alive 参数?

负责 TCP Keep Alive 的文件是

/proc/sys/net/ipv4/tcp_keepalive_time
/proc/sys/net/ipv4/tcp_keepalive_intvl
/proc/sys/net/ipv4/tcp_keepalive_probes

这些已经有一些预定义的默认值,我们可以使用以下内容进行检查

# cat /proc/sys/net/ipv4/tcp_keepalive_time
7200
# cat /proc/sys/net/ipv4/tcp_keepalive_intvl
75
# cat /proc/sys/net/ipv4/tcp_keepalive_probes
9

前两个文件中的数值以秒为单位定义,第三个只是一个数值。

  • 现在上面的 3 个文件解释了在 7200 秒后发送第一个网络数据包(keepalive 探测)并在收到响应之前发送九次。
  • 因此,如果机器在完成 9 次之前收到响应,我们将被困在网络上,之后我们将断开连接。
  • 第二个保活探测将在 75 秒后发送,并且将遵循与上述相同的过程。
  • 同样,第三次探测将在 75 秒后开始。

我们应该根据我们的要求更改这些默认值。
不允许使用 vi 编辑器更改值,因此这是我们可以遵循的另一种方法

# echo 300 > /proc/sys/net/ipv4/tcp_keepalive_time
# echo 60 > /proc/sys/net/ipv4/tcp_keepalive_intvl
# echo 20 > /proc/sys/net/ipv4/tcp_keepalive_probes

在这里,我们更改了这些值,因此现在将在 300 秒后发送第一个 keepalive 探测,例如:5 分钟和 20 个探测将在网络断开连接之前发送。
下一个数据包将在 60 秒后再次发送,例如:1 分钟,因此这显然可以帮助解决我的网络断开连接问题。

现在我需要在我的机器上刷新这些设置

刷新 sysctl 内核参数

# sysctl -p

查看所有内核参数

# sysctl -a

重新启动机器一次以使更改生效并使用这些新参数加载内核。

日期:2020-06-02 22:17:16 来源:oir作者:oir