Go(带有 Redigo 的 Redis)突然断开 pubsub 循环中的连接

问题描述 投票:0回答:1

我的开源项目 - Ballot - 已在 AWS 上针对 EC2/Redis 实例运行多年,没有出现任何问题。

我最近将其移至 DigitalOcean,并且 PubSub 开始出现连接丢失的问题。

我的

Receive
循环是非常简单,但现在几分钟(或几小时)后我得到了一个EOF。

我从 Go 1.13 升级到 1.21 并获取了最新版本的库,但问题只是表现为有关连接已消失的更详细错误。

我将 IdleTimeout here 从 240 秒降低到 30 秒,这有时会有帮助。最终 Go 例程会出现恐慌并退出。

它与新主机和新 Redis(v4 到 Digital Ocean 的 Redis 7)有某种关系,但我找不到如何关联。

go redis publish-subscribe redigo
1个回答
0
投票

事实证明另一个问题中的建议在这里有所帮助:How to write better Receive() in Golang for Redis(redigo) Pubsub?

很容易找到弹性较低的连接环路的示例 - 而我的连接环路恰好在正确的环境中运行良好很长一段时间。

基本上 - 两个循环:外循环是当前连接的“守卫”。

© www.soinside.com 2019 - 2024. All rights reserved.