delayd_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
最新のデプロイの数日前に特定のプロセスが開始されたことに気づきました。私がそれを殺すとすぐに、エラーはなくなりました。私の特定のケースで起こったと思うのは、最新のデプロイですべてのdelayed_jobインスタンスが正しく削除されなかったということです。