前言
這篇是我在 containerize Go 專案時踩到的一個坑,主要是 prefork
模式無法啟動,最後才發現是因為我直接用 CMD ["./build/app"]
,導致這個程式變成 PID 1。後來試了 sh -c
跟 --pid=host
之後才搞定,順便把這整個過程紀錄一下。
專案將 Laravel 的 QUEUE_CONNECTION
從 database
切換到 redis
,並透過 Supervisor 背景執行 queue worker。初始設定中,Redis driver 預設 retry_after
為 90 秒,導致工作常在執行 90 秒後被重新派發,並因多次重試而拋出 MaxAttemptsExceededException
。
log大致如下:1
production.ERROR: App\Jobs\getApiCargoFormApiCompanion has been attempted too many times or run too long. The job may have previously timed out.
以下整理兩種解法。