如何关闭TCP Keep Alive


我用TCP抓包时,发现有TCP keep alive包,有没有什么配置可以关闭该功能?
mqtt不是本身就有ping和pong了吗,因此我觉得TCP keep alive是不是多余了?
我尝试了几个配置都不行(比如listener.tcp.default.tcp_options. keepalive),请问有什么方法关闭吗?

这个 tcp keepalive 看起来是客户端的 tcp 协议栈行为?
改以下 sysctl 配置试试。

不过使用 tcp 长连接,开启 tcp keepalive 还是比较有用的。不太建议关闭。


应该不是客户端发起的,抓包都是1883流出的TCP Keep Alive 包,我目前用的测试环境都是官方的docker image,5.5.1版本,里面的linux tcp配置都是默认的,7200秒空闲等待,间隔75秒。测试的客户端用的是MQTTX。但是我发现这个TCP 空闲等待的间隔是15秒,和linux默认的7200秒对不上。因此我认为是EMQX自己的设定,不是用的linux底层的配置,但是我不知道如何修改。