我想在我的 linux 机器上设置 tcp keep alive。所以我正在做的是运行一个脚本
if [ `/sbin/sysctl -n net.ipv4.tcp_keepalive_time` != 200 ] ; then
/sbin/sysctl -w net.ipv4.tcp_keepalive_time=200;
但我仍然无法与亚马逊的 Redshift 联系起来。有人可以帮我看看如何检查 tcp keep alive 是否真的设置了吗?
最佳答案
要检查 keep alive 是否处于事件状态,请打开一个连接,不要交换任何数据,并使用 tcpdump 或类似工具验证数据包是否在连接上定期交换,即使没有真正的数据交换。
但也许你只是把 keep-alive 和 timeout 搞混了:
- 保持事件状态:检测连接是否仍处于事件状态,例如如有必要,可以交换这些数据。这将检测网络连接丢失等。保持事件在 TCP 层完成。
- 超时:连接在一些不活动后关闭。这是在应用层完成的。
在这两种情况下,您都不会检测到问题,直到您尝试在套接字上读取或写入。
关于linux - 如何验证 TCP 在 Linux 上保持事件状态,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24428598/