TCP 连接停止,数据处于 RecvQ 状态且 ESTABLISHED 关闭

TCP 连接停止,数据处于 RecvQ 状态且 ESTABLISHED 关闭

我的网络技能很差,我试图理解以下 netstat -ton 的含义。

我们有 Redis 服务器和一个客户端,其中有一个线程通过 PUB/SUB 连接到它。SUBSCRIBERedis 通道的客户端。

我猜想,这会在两者之间创建一个长期存在的 TCP 链接,并且当通道上发生某些情况时,服务器会向客户端发送数据。

但是,有时(一个月到三个月)客户端会停止接收任何内容,但不会崩溃或引发任何错误。

在这种状态下,我看到以下内容:

已停止的 Recv Q 且 ESTABLISHED 已关闭。

在此输入图像描述

我读了一下,它可能与很多事情有关,包括 TCP 保持活动参数?

关于如何调试这种状态有什么技巧和想法吗?

重启客户端就解决一切了。

答案1

在我看来,这个问题出在您的客户端内,因为已建立连接的 Recv-Q 是连接到该套接字的用户程序未复制的字节数。这意味着,您的应用程序不会从套接字读取数据。

相关内容