电子邮件失败任务

你好!

Discourse 版本:3.5.0.beta2-dev(176ee0bf60)
托管于:VPS - Centminmod (131.00stable) on Alma8
问题:电子邮件偶尔发送失败

我的 VPS 上有两个 vHost。一个运行 Xenforo,一个运行 Discourse。

我的 Xenforo 主机可以全天候正常发送电子邮件。而 Discourse 似乎大约每 24 小时失败一次,显示“有 [数量增加] 个电子邮件作业失败。请检查您的 app.yml 并确保邮件服务器设置正确。请查看 Sidekiq 中的失败作业。”

我可以通过重启 docker 服务来暂时“解决”问题。邮件流恢复。
我确信邮件设置是正确的。重启 docker 服务后,我可以访问 admin –> email –> server setup & logs –> settings 并发送一封测试邮件。

一旦失败,我就无法发送。

我注意到大量 Sidekiq 内存占用过高(使用 5xxM),导致 Fastserver-app 重启。

activesupport-7.2.2.1/lib/active_support/broadcast_logger.rb:130:in `block in warn'
activesupport-7.2.2.1/lib/active_support/broadcast_logger.rb:231:in `block in dispatch'
activesupport-7.2.2.1/lib/active_support/broadcast_logger.rb:231:in `each'
activesupport-7.2.2.1/lib/active_support/broadcast_logger.rb:231:in `dispatch'
activesupport-7.2.2.1/lib/active_support/broadcast_logger.rb:130:in `warn'
/var/www/discourse/lib/demon/sidekiq.rb:55:in `block in rss_memory_check'
/var/www/discourse/lib/demon/sidekiq.rb:49:in `each'
/var/www/discourse/lib/demon/sidekiq.rb:49:in `rss_memory_check'
config/unicorn.conf.rb:132:in `block (2 levels) in reload'

我还看到 Job exception: no address for meta.discourse.org(ResolvError)

excon-1.2.4/lib/excon/socket.rb:191:in `connect'
excon-1.2.4/lib/excon/ssl_socket.rb:194:in `connect'
excon-1.2.4/lib/excon/socket.rb:60:in `initialize'
excon-1.2.4/lib/excon/ssl_socket.rb:10:in `initialize'
excon-1.2.4/lib/excon/connection.rb:487:in `new'
excon-1.2.4/lib/excon/connection.rb:487:in `socket'
excon-1.2.4/lib/excon/connection.rb:120:in `request_call'
excon-1.2.4/lib/excon/middlewares/mock.rb:57:in `request_call'
excon-1.2.4/lib/excon/middlewares/instrumentor.rb:34:in `request_call'
excon-1.2.4/lib/excon/middlewares/idempotent.rb:19:in `request_call'
excon-1.2.4/lib/excon/middlewares/base.rb:22:in `request_call'
excon-1.2.4/lib/excon/middlewares/decompress.rb:14:in `request_call'
excon-1.2.4/lib/excon/middlewares/base.rb:22:in `request_call'
excon-1.2.4/lib/excon/connection.rb:293:in `request'
/var/www/discourse/lib/discourse_updates.rb:136:in `new_features_payload'
/var/www/discourse/app/jobs/scheduled/check_new_features.rb:24:in `execute'
/var/www/discourse/app/jobs/base.rb:316:in `block (2 levels) in perform'
rails_multisite-6.1.0/lib/rails_multisite/connection_management/null_instance.rb:49:in `with_connection'
rails_multisite-6.1.0/lib/rails_multisite/connection_management.rb:21:in `with_connection'
/var/www/discourse/app/jobs/base.rb:303:in `block in perform'
/var/www/discourse/app/jobs/base.rb:299:in `each'
/var/www/discourse/app/jobs/base.rb:299:in `perform'
/var/www/discourse/app/jobs/base.rb:379:in `perform'
mini_scheduler-0.18.0/lib/mini_scheduler/manager.rb:137:in `process_queue'
mini_scheduler-0.18.0/lib/mini_scheduler/manager.rb:77:in `worker_loop'
mini_scheduler-0.18.0/lib/mini_scheduler/manager.rb:63:in `block (2 levels) in ensure_worker_threads'

我有一段时间没有更改过此服务器关于 docker 的配置。我更新了内核/php 和此 docker 之外的其他服务。
自从我更新了 discourse 版本后,问题最近变得更加频繁。在此之前它一直很稳定。
我的 DNS 是 8.8.8.8 和 8.8.4.4。

任何建议都将不胜感激!

如果 Sidekiq 消耗过多内存,可能会导致 Discourse 重启,从而中断计划的电子邮件作业。Discourse 包含一项自动重启功能,可在 Sidekiq 的内存使用量超过预定阈值时触发。

为解决此问题,请检查 app.yml 文件中的 UNICORN_SIDEKIQ_MAX_RSS 设置。如果该值过低,请考虑增加它。

有关此问题的进一步讨论,您可以参考此主题:
Sidekiq 消耗过多内存 - 重启

2 个赞

我现在将调整该设置,如果继续遇到这些问题,我会恢复。

1 个赞

哎呀,才过了 24 小时多一点,我就没通过邮件……

Jobs::HandledExceptionWrapper: Wrapped Net::OpenTimeout: execution expired
1 个赞

确保您的 Discourse 实例可以访问 SMTP 服务器
telnet DISCOURSE_SMTP_ADDRESS DISCOURSE_SMTP_PORT

1 个赞

我会再次等待失败并重试。

我在同一VPS上安装了一个非Docker的XenForo,它没有报錯。

会反馈结果。谢谢你到目前为止的指导。

2 个赞

我可以连接到smtp服务器。

2 个赞

接连发生了几次故障,然后大约 8 小时都没有发生任何情况

1 个赞