首页 > 解决方案 > 网络问题和 Redis PubSub

问题描述

我在 Windows 上使用 ServiceStack 5.0.2 和 Redis 3.2.100。我有几个具有活动 Pub/Subscription 的节点和每秒几个 Pub。

我注意到,如果 Redis 服务在没有物理网络连接的情况下重新启动(因此其中一个客户端无法连接到 Redis 服务),则该客户端会在网络恢复后停止接收任何消息。我们称它为“僵尸订阅者”:它认为它仍在运行,但从未真正收到消息:客户端认为它有一个连接,服务器上的相同连接已关闭。

问题是 RedisSubscription.SubscribeToChannels 中没有抛出异常,所以我无法检测到问题以便重新订阅。

我也分析了 RedisPubSubServer ,我想我发现了一个问题。在所描述的情况下,RedisPubSubServer 尝试重新启动(发送停止命令CTRL),但“僵尸订阅者”没有收到它并且没有重新订阅。

标签: redisservicestackservicestack.redis

解决方案


推荐阅读