active_elastic_jobを使ってelastic beanstalk(以下EB)のworker tierでバッチ処理を実行したところ、どうやら途中で処理が止まり再実行されているようだったので調査、対応してみた。
環境
– Rails 4.2.5
– active_elastic_job 2.0.1
worker tierの/var/log/aws-sqsd/default.logに出ていたログ
2017-04-14T19:20:02Z socket-err: 1d5f2ed9-a7ae-1e24-9ccd-109846833679 (4) Errno::ETIMEDOUT - 299.008
2017-04-14T19:20:04Z message: sent to http://localhost:80/periodic_tasks
1行目の一番最後に有る「299.008」と言う数字。こいつがタイムアウトにかかった秒という事が判明。
EBの設定画面を見ると「アイドル状態のタイムアウト」という項目で設定している数値だったので、これを最大の1800秒に変更したところ、一応問題なく動くようになった。
まとめ
とりあえず最大の1800秒にしてはいるが、データが増えたらいつか到達してしまう可能性があるので、再実行された場合は処理済みのデータは飛ばすようバッチファイルを修正した。
コメント