Здравствуйте,
Мы работаем с сервером Discourse, состоящим из двух контейнеров и поддерживающим несколько доменов, уже около 4 лет и хостим примерно 20 доменов. Мы регулярно выполняли обновления успешно. Однако в начале октября (примерно 8–10 октября), вероятно, после обновления Discourse, мы обнаружили, что письма для регистрации не отправляются. Мы заметили, что задача Sidekiq не выполняется, а Sidekiq постоянно перезапускается.
Единственное отличие от обычных миграций, которые мы выполняем, заключается в том, что на этот раз мне пришлось вручную изменить все базы данных PostgreSQL для активации последнего расширения 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 view» не обрабатывает задачи
- В интерфейсе отображаются предупреждения о том, что Sidekiq работает некорректно:
Проверка обновлений не была выполнена. Убедитесь, что Sidekiq запущен.
Вот что я попробовал:
- пересборка (без ошибок)
- очистка очереди Redis (работает, панель Sidekiq сбрасывается до нуля, но задачи всё равно не обрабатываются)
- проверка версии Redis в контейнере данных (версия Redis: 7.0.15)
- проверка, не приостановлен ли Sidekiq (не приостановлен)
- просмотр логов в
shared/web-only/log, но ничего существенного я не нашёл, хотя дополнительные подсказки будут очень кстати! - попытка активировать логи Sidekiq, установив
DISCOURSE_LOG_SIDEKIQ: 1вweb_only.yml, а затем выполнив./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"}
У меня заканчиваются идеи, что ещё можно сделать, чтобы найти причину проблемы. Где можно поискать содержательное сообщение об ошибке?
Заранее большое спасибо!

