我的网络技能很差,我试图理解以下 netstat -ton 的含义。
我们有 Redis 服务器和一个客户端,其中有一个线程通过 PUB/SUB 连接到它。SUBSCRIBE
Redis 通道的客户端。
我猜想,这会在两者之间创建一个长期存在的 TCP 链接,并且当通道上发生某些情况时,服务器会向客户端发送数据。
但是,有时(一个月到三个月)客户端会停止接收任何内容,但不会崩溃或引发任何错误。
在这种状态下,我看到以下内容:
已停止的 Recv Q 且 ESTABLISHED 已关闭。
我读了一下,它可能与很多事情有关,包括 TCP 保持活动参数?
关于如何调试这种状态有什么技巧和想法吗?
重启客户端就解决一切了。
答案1
在我看来,这个问题出在您的客户端内,因为已建立连接的 Recv-Q 是连接到该套接字的用户程序未复制的字节数。这意味着,您的应用程序不会从套接字读取数据。