您好,
我们已经运行了一个包含两个容器、支持多域名的 Discourse 服务器大约 4 年,托管了约 20 个域名。我们定期成功地进行了更新。然而,我们在 10 月初(大约 10 月 8-10 日开始)注意到,可能是在 Discourse 更新后,注册电子邮件未能发送。我们发现 sidekiq 任务没有运行,并且 Sidekiq 不断重启。
与我们执行的常规迁移唯一的区别是,这次我必须手动修改所有 Postgres 数据库以激活最新的 vector 扩展;似乎升级脚本只会在主 discourse 数据库上执行此操作。
症状:
- 日志显示 Sidekiq 每隔几秒钟就会重启
- 重启与以下错误消息相关:
/var/www/discourse/lib/demon/sidekiq.rb:31:in `heartbeat_check'
config/unicorn.conf.rb:131:in `block (2 levels) in reload'
E, [2025-11-01T11:56:05.989645 #67] ERROR -- : reaped #<Process::Status: pid 6534 SIGKILL (signal 9)> worker=unknown
I, [2025-11-01T11:56:41.468169 #7038] INFO -- : Loading Sidekiq in process id 7038
W, [2025-11-01T11:57:20.944092 #67] WARN -- : Process would not terminate cleanly, force quitting. pid: 7038 Demon::Sidekiq
/var/www/discourse/lib/demon/base.rb:94:in `restart'
/var/www/discourse/lib/demon/sidekiq.rb:40:in `block in heartbeat_check'
/var/www/discourse/lib/demon/sidekiq.rb:31:in `each'
/var/www/discourse/lib/demon/sidekiq.rb:31:in `heartbeat_check'
- “sidekiq 视图”似乎没有处理作业
- UI 显示一些关于 sidekiq 未正常运行的警告:“尚未执行更新检查。请确保 Sidekiq 正在运行。”
这是我尝试过的方法:
- 重建(无错误)
- 清空 Redis 队列(有效,Sidekiq 仪表板返回零,但任务仍未处理)
- 检查数据容器中的 redis 版本(redis 版本:7.0.15)
- 检查 Sidekiq 是否已暂停(未暂停)
- 浏览
shared/web-only/log中的日志,但找不到任何相关信息,不过 额外的提示 欢迎! - 尝试通过在
web_only.yml中设置DISCOURSE_LOG_SIDEKIQ: 1来激活 Sidekiq 日志,然后执行./launcher stop web_only && ./launcher destroy web_only && ./launcher start web_only,日志仅显示成功消息,例如:
{"hostname":"forum-web-only","pid":12961,"database":"chatonnade","job_id":null,"job_name":"Jobs::DiscourseAutomation::StalledWikiTracker","job_type":"scheduled","opts":"{}","status":"success","live_slots_start":1298445,"duration":0.04405494895763695,"sql_duration":0.03392060892656446,"sql_calls":1,"redis_duration":0,"redis_calls":0,"net_duration":0,"net_calls":0,"live_slots_finish":1299663,"live_slots":1218,"@timestamp":"2025-11-01T12:17:32.561+00:00"}
我快没主意了,不知道还能做什么来查明问题。我可以在哪里查找有意义的错误消息?
非常感谢!

