我最近升级了在 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 处理其任务队列?