Бесконечный цикл при отправке дайджест-рассылок

Всем привет.

Наш сервер Discourse попал в бесконечный цикл и отправляет письма без остановки. Вот вывод файла shared/standalone/log/rails/production.log:

Delivered mail 7db8eecd-c36a-419c-ae34-0561b08bae25@community.xx.cc (1322.2ms)
  Rendered user_notifications/digest.text.erb (Duration: 50.1ms | Allocations: 12577)
  Rendering user_notifications/digest.html.erb within layouts/email_template
  Rendered user_notifications/digest.html.erb within layouts/email_template (Duration: 139.5ms | Allocations: 26910)
  Rendering user_notifications/digest.text.erb
  Rendered user_notifications/digest.text.erb (Duration: 71.7ms | Allocations: 13505)
Delivered mail 5bbf2e54-96a8-437d-a032-69f98a00f22a@community.xx.cc (1485.2ms)
  Rendering user_notifications/digest.html.erb within layouts/email_template
  Rendered user_notifications/digest.html.erb within layouts/email_template (Duration: 70.9ms | Allocations: 20613)
  Rendering user_notifications/digest.text.erb
  Rendered user_notifications/digest.text.erb (Duration: 38.2ms | Allocations: 11390)

Это началось внезапно (вероятно, когда запустился cron для дайджестов:

)

Сейчас одно ядро полностью загружено отправкой писем с дайджестами.

  • Пересборка приложения не помогла;

  • Обновление до последней версии не дало результата;

  • Включение опции «Отключить сводные письма для всех пользователей» и повторная пересборка приложения тоже не помогли;

    #### Installed
    
    ### 2.4.0.beta5
    

Что ещё можно сделать? Как остановить это?
Заранее спасибо.

1 лайк

Я могу ошибаться, но, по-моему, дело в том, что письма с резюме оказались в очереди, и теперь они отправляются. Процесс будет продолжаться до тех пор, пока все письма не будут доставлены.

Если я прав, вы можете отключить отправку писем, найти таблицу с ними и удалить их. Однако в следующий раз, когда будут отправляться письма с резюме, ситуация повторится.

1 лайк

Да, но это уже происходит три дня. Все остальные письма (например, о регистрации) больше не доставляются. Сообщество работает, но вся рассылка — нет.
Я нашел очень похожую проблему — Extreme memory usage due to bad mail credentials. Похоже, это какой-то хитрый баг.

Единственный способ, который я нашел, чтобы остановить это, — удалить токен аутентификации у моего SMTP-провайдера. Discourse начал показывать сотни ошибок, и только после этого нагрузка снизилась. Я восстановил токен, и теперь всё, кажется, в порядке.

1 лайк

Были ли у вас неверные учетные данные для электронной почты?

@codinghorror Я нашёл корневую причину проблемы. Наш почтовый провайдер удалил (по своим глупым причинам) подтверждённые записи хоста для нашего аккаунта. Эти записи хоста использовались для заполнения поля from в письме с нашим хостом. После этого Discourse ушёл в бесконечный цикл. Мне кажется, что в потоке работы Discourse тоже есть баг в этом случае. Ведь он должен сообщать об ошибке и не загружать одно ядро на 100%.

Так что аккаунт в порядке. Но почтовый провайдер возвращает ошибку при отправке письма: «Неверный отправляющий хост» или что-то в этом роде, и именно этот поток вызывает проблему.

2 лайка

Я согласен, это плохое состояние, и мы должны справляться с ним лучше.

1 лайк

Всё уже вернулось в норму?

Да. После того как я изменил учетные данные для почты.

1 лайк