Cron工作卡在「執行中」狀態
本文提供當Adobe Commerce cron工作未完成執行並持續處於「執行中」狀態時,以防止其他cron工作執行的解決方案。 發生此狀況的原因有很多,例如網路問題、應用程式當機、重新部署問題。
受影響的產品和版本
雲端基礎結構上的Adobe Commerce,所有版本
症狀 symptom
必須重設的cron個工作的症狀包括:
- 大量工作出現在
cron_schedule
佇列中 - 網站效能開始降低
- 工作無法依排程執行
解決方案 solutions
一次停止所有cron個工作的解決方案 solution-stop-all-crons-at-once
WARNING
不使用
--job-code
選項執行此命令會重設 所有 cron工作,包括目前執行的那些工作,因此我們建議僅在特殊情況下才使用此命令,例如在您確認必須重設所有cron工作之後。 重新部署預設會執行此命令以重設cron個工作,以便在環境備份後適當地復原。 當索引器執行時,請避免使用此解決方案。若要解決此問題,您必須使用cron:unlock
命令重設cron工作。 這個命令會變更資料庫中cron工作的狀態,強制結束工作以允許其他排定的工作繼續。
- 開啟終端機,並使用您的SSH金鑰連線到受影響的環境。
- 取得MySQL資料庫認證:
shell echo $MAGENTO_CLOUD_RELATIONSHIPS | base64 -d | json_pp
- 使用
mysql
連線到資料庫:shell mysql -hdatabase.internal -uuser -ppassword main
- 選取
main
資料庫:shell use main
- 尋找所有正在執行的cron工作:
shell SELECT * FROM cron_schedule WHERE status = 'running';
- 複製任何執行時間超過平常的工作的
job_code
。 - 使用上一步驟中的排程ID來解除鎖定特定cron工作:
shell ./vendor/bin/ece-tools cron:unlock --job-code=<job_code_1> [... --job-code=<job_code_x>]
停止單一cron的解決方案 solution-stop-a-single-cron
-
開啟終端機,並使用您的SSH金鑰連線到受影響的環境。
-
使用下列命令檢查長時間執行的工作:
date; ps aux | grep '[%]CPU\|cron\|magento\|queue' | grep -v 'grep\|cron -f'
-
在輸出中,就像下面的範例輸出一樣,您會看到目前的日期和流程清單。
START
欄顯示處理的開始時間或日期:code language-none Wed May 8 22:41:31 UTC 2019 USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND root 590 0.0 0.0 27528 2768 ? Ss Jan15 0:49 /usr/sbin/cron -f bxc2qly+ 25855 0.0 0.0 23724 2184 ? S 20:51 0:00 logger -d -u /run/bxc2qlykqhbqe_stg-cron.sock -p cron.info -s -t cron-bxc2qlykqhbqe_stg-bxc2qlykqhbqe_stg bxc2qly+ 25860 57.7 1.3 584220 222692 ? S 20:51 0:02 php bin/magento cron:run bxc2qly+ 25863 0.0 0.0 23724 2472 ? S 20:51 0:00 logger -d -u /run/bxc2qlykqhbqe-cron.sock -p cron.info -s -t cron-bxc2qlykqhbqe-bxc2qlykqhbqe bxc2qly+ 25876 53.0 0.6 475472 111468 ? R 20:51 0:01 /usr/bin/php7.1-zts /app/bxc2qlykqhbqe_stg/bin/magento cron:run --group=index --bootstrap=standaloneProcessStarted=1 bxc2qly+ 25878 57.0 0.6 475472 112080 ? R 20:51 0:01 /usr/bin/php7.1-zts /app/bxc2qlykqhbqe_stg/bin/magento cron:run --group=staging --bootstrap=standaloneProcessStarted=1 bxc2qly+ 25880 50.5 0.6 475472 111312 ? R 20:51 0:01 /usr/bin/php7.1-zts /app/bxc2qlykqhbqe_stg/bin/magento cron:run --group=catalog_event --bootstrap=standaloneProcessStarted=1 bxc2qly+ 25882 48.5 0.6 475472 111220 ? R 20:51 0:00 /usr/bin/php7.1-zts /app/bxc2qlykqhbqe_stg/bin/magento cron:run --group=consumers --bootstrap=standaloneProcessStarted=1 bxc2qly+ 25884 50.5 0.6 475472 111372 ? R 20:51 0:01 /usr/bin/php7.1-zts /app/bxc2qlykqhbqe_stg/bin/magento cron:run --group=ddg_automation --bootstrap=standaloneProcessStarted=1 bxc2qly+ 25890 32.5 0.6 475368 110672 ? R 20:51 0:00 /usr/bin/php7.1-zts /app/bxc2qlykqhbqe/bin/magento cron:run --group=staging --bootstrap=standaloneProcessStarted=1 bxc2qly+ 25892 34.5 0.6 475472 110724 ? R 20:51 0:00 /usr/bin/php7.1-zts /app/bxc2qlykqhbqe/bin/magento cron:run --group=catalog_event --bootstrap=standaloneProcessStarted=1 bxc2qly+ 25894 31.5 0.6 475368 110136 ? R 20:51 0:00 /usr/bin/php7.1-zts /app/bxc2qlykqhbqe/bin/magento cron:run --group=consumers --bootstrap=standaloneProcessStarted=1 bxc2qly+ 25896 29.0 0.6 475320 109876 ? R 20:51 0:00 /usr/bin/php7.1-zts /app/bxc2qlykqhbqe/bin/magento cron:run --group=ddg_automation --bootstrap=standaloneProcessStarted=1
-
如果您發現長時間執行的cron工作可能會造成區塊部署程式,您可以使用
kill
命令終止該程式。 您可以識別 處理序識別碼 (找到PID
欄),然後將該PID
放入命令以終止處理序。
終止處理序 命令為:kill -9 <PID>
-
如果您嘗試重新部署,則可以重新部署。
recommendation-more-help
8bd06ef0-b3d5-4137-b74e-d7b00485808a