Недавно я обновил экземпляр Docker с Discourse, работающий на Ubuntu EC2. Для обновления использовал команду launcher rebuild. Ранее у меня была версия 2.4.0, которую я обновил до 2.6.0.beta1 (позже также до 2.6.0.beta2). Вместо Redis я использую Elasticache, и до обновления всё работало без проблем. Сразу после обновления я заметил, что 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 обработать свои задачи?