You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Sidekiq mailers队列未处理任务求助(Rails4.2.10+Ruby2.4.3)

解决Sidekiq Mailers队列任务卡住不处理的问题

针对你使用Rails 4.2.10 + Ruby 2.4.3时,Sidekiq的mailers队列进程运行但不处理任务,且任务在Busy标签页1分钟后消失的问题,结合你的日志(只有任务start记录,无完成/失败日志),可以按照以下步骤排查解决:

1. 先验证邮件发送本身是否正常

Sidekiq的邮件任务卡住,大概率是邮件发送环节阻塞了,先跳过Sidekiq直接测试:

  • 打开Rails控制台:rails c
  • 执行直接发送邮件的命令:
ActionMailer::Base.mail(to: 'your-test-email@example.com', subject: 'Test Direct Send', body: 'This is a test').deliver_now
  • 如果这个命令卡住或报错,说明是邮件配置(比如SMTP参数)的问题,优先解决这个:
    • 检查对应环境的配置文件(如config/environments/production.rb)里的SMTP设置:address、port、user_name、password、authentication、openssl_verify_mode、timeout等参数是否正确,尤其是SMTP服务器是否允许你的服务器IP访问,或者有没有开启两步验证导致密码失效。
  • 如果直接发送成功,再回到Sidekiq的问题排查。

2. 调整Sidekiq任务超时设置

你的任务正好在1分钟后消失,和Sidekiq默认1分钟的任务超时限制完全吻合:当任务执行超过1分钟,Sidekiq会强制终止线程,但不会标记任务失败(导致日志只有start记录)。

  • 在config/initializers/sidekiq.rb里添加针对mailers队列的超时配置:
Sidekiq.configure_server do |config|
  config.queue_config_hash = {
    'mailers' => { timeout: 15.minutes } # 根据实际邮件发送耗时调整,比如设置为15分钟
  }
end
  • 重启Sidekiq服务,观察任务是否能正常完成。

3. 控制Sidekiq邮件队列的并发数

如果同时发送大量邮件,可能会耗尽SMTP连接池或者被邮件服务器限流,导致任务全部卡住:

  • 启动Sidekiq时指定mailers队列的并发数,比如限制为5个线程:
sidekiq -q mailers -c 5
  • 避免并发数过高,根据你的邮件服务器的限制调整合适的数值。

4. 捕获任务执行的异常信息

有时候任务执行中出现异常但未被Sidekiq捕获,导致任务被静默终止:

  • 在config/initializers/sidekiq.rb里添加错误处理器,把异常记录到日志:
Sidekiq.configure_server do |config|
  config.error_handlers << proc { |exception, context_hash|
    Rails.logger.error "[Sidekiq Error] #{exception.class}: #{exception.message}"
    Rails.logger.error exception.backtrace.join("\n")
  }
end
  • 重启Sidekiq后,查看Rails日志(如log/production.log),看是否有邮件任务相关的异常堆栈信息,定位具体问题。

5. 确认Sidekiq队列配置和Redis连接

  • 确保Sidekiq确实在监听mailers队列:启动Sidekiq时明确指定队列sidekiq -q mailers,避免队列名称拼写错误或Sidekiq配置里没包含该队列。
  • 在Rails控制台里检查队列任务数:Sidekiq::Queue.new('mailers').size,确认任务确实被加入了队列。
  • 检查Redis服务状态:确保Redis正常运行,Sidekiq能正常连接(可以通过Sidekiq Web Dashboard查看Redis连接信息)。

内容的提问来源于stack exchange,提问作者NikD

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.15 03:52:50