Sidekiq 使用 elasticache,自 discourse 升级后队列作业未处理

我最近升级了在 Ubuntu EC2 上运行的 Discourse Docker 实例。我使用 launcher rebuild 进行了升级。之前版本是 2.4.0,我升级到了 2.6.0.beta1(随后又升级到了 2.6.0.beta2)。我使用的是 ElastiCache 而非 Redis,升级前一切正常。升级后我立即发现 Sidekiq 没有发送邮件。我重启了应用并清除了缓存,当时似乎恢复正常,但这其实是一个假象。

故障表现

  • Sidekiq 正在以相对稳定的速度调度和入队任务(从 Sidekiq 仪表板可以看出),但实际上并未执行任何任务。
  • 管理页面提示 Sidekiq 未运行。
  • 日志中多次出现 Sidekiq heartbeat test failed, restarting
  • 当然:邮件无法发送给用户。

我已尝试的措施(参考了本站和 Stack Overflow 的帖子)

  • 使用 discourse-doctor 成功发送测试邮件,验证了该流程部分正常。
  • 在 Sidekiq 仪表板确认页脚显示正确的 ElastiCache 实例 。
  • 确认 Docker 日志未报错(ok: run: redis: (pid XX) 0s)。
  • 清除缓存并重启 Discourse(./launcher restart app)。
  • 停止应用、清除缓存、再启动应用。
  • 再次重建应用。

尚未尝试的步骤

  • 创建新的 ElastiCache 实例。
  • 废弃当前安装并重新部署一个干净的环境。

有人遇到过类似问题吗?有什么建议吗?
我是否遗漏了某些日志?
有没有办法强制 Sidekiq 处理其任务队列?

Discourse 在某个时间点开始要求 Redis 5,您认为您的 ElastiCache 支持哪个 Redis 版本?我印象中日志里有明确提示,但可能记错了。

我会检查一下我的使用 ElastiCache 的网站,确认是否遇到问题。我相当确定该网站使用的是 ElastiCache。

这些信息很有用,谢谢。我目前使用的是 Redis 3 版本,看来今晚需要进行更新。

我以为日志中有明确的提示信息

也有可能我查看的日志文件不对。/logs./launcher logs app 都没有提供任何相关线索,也许我应该去其他地方查找?

/var/discourse/shared/logs/rails/production.log

如果我的记忆和手指能正常工作。

非常接近。我在以下位置找到了它:

/var/discourse/shared/web-only/log/rails/production.log

一旦找到,信息非常清晰 :+1:t2::

您正在连接到 Redis v3.2.10,Sidekiq 需要 Redis v4.0.0 或更高版本

我已升级到 Redis 5,它处理了我积压的队列。现在一切正常!谢谢!