更深入地了解如何为delay_job进行调试。我在设置后做了以下reconnect: true
操作database.yml
,但这个解决方案不起作用。
cd /your_rails_deploy_code/log
cat production.log
# check the pids from delayed job:
E, [2017-02-01T19:45:21.614579 #2592] ERROR -- : 2017-02-01T19:45:21+0000: [Worker(delayed_job.3 host:demeter pid:2592)] Job ActiveJob::QueueAdapters::DelayedJobAdapter::JobWrapper (id=193675) FAILED (0 prior attempts) with Mysql2::Error: closed MySQL connection
在我的具体情况下,pid:2592
是唯一一个不断失败的。为什么?让我们来了解一下:
[deploy@demeter] ps -ef | grep 2592
deploy 2592 1 0 Jan31 ? 00:00:40 production/delayed_job.3
deploy 23312 1 0 Feb01 ? 00:00:40 production/delayed_job.1
deploy 23318 1 0 Feb01 ? 00:00:40 production/delayed_job.0
我注意到特定过程在我最近一次部署前几天就开始了。一旦我杀死它,错误就消失了。我假设在我的具体情况下发生的是我最新的部署没有正确删除所有延迟作业实例。