在linux中,“/proc/sys/net/ipv4/tcp_keepalive_time”对客户端和服务器都有影响吗?

San*_*aya 5 linux tcp

我们有一台在 linux 上运行的机器,我们在其中公开并使用使用 Keep Alive 设置的基于 SOAP 的 Web 服务。现在,当我们通过在 linux 中设置“/proc/sys/net/ipv4/tcp_keepalive_time”来更改 TCP 保持活动超时值时,这会影响在此 linux 机器中运行的 TCP 客户端和服务器吗?

附加信息:我们使用部署在 apache karaf(servicemix) 中的 apache camel-cxf 端点来公开和使用基于 SOAP 的网络服务。

小智 13

Linux 内核对 TCP keepalive 的内置支持会影响所有启用 keepalive 的 TCP 套接字。

但是,默认情况下不启用 TCP 保持连接:应用程序必须使用该setsockopt接口显式请求对它们的套接字进行保持连接控制。

您可以使用netstat带有以下-o, --timers选项的命令来检查是否在特定套接字上启用了 keepalive :

在这里可以看到同一个进程可以在两种模式下打开不同的网络套接字:

# netstat -anpo | grep 8999
tcp        0      0 10.10.171.44:48744         10.10.139.30:8999          ESTABLISHED 18232/java          keepalive (83.39/0/0)

# netstat -anpo | grep 8009
tcp        0      0 10.10.171.44:8009          10.10.171.42:40947         ESTABLISHED 18232/java          off (0.00/0/0)
Run Code Online (Sandbox Code Playgroud)