Cron個任務會鎖定來自其他群組的任務

本文針對Adobe Commerce的雲端基礎結構問題,提供解決方案,此問題與某些長期執行的cron工作封鎖其他cron工作相關。

受影響的產品和版本

  • 雲端基礎結構上的Adobe Commerce Pro計畫架構
  • 2019年5月前入門

問題

在雲端適用的Adobe Commerce上,當您有複雜的cron個任務(長期執行任務)時,這些任務可能會鎖定其他任務以供執行。 例如,索引器的工作會重新索引失效的索引器。 這可能需要幾個小時才能完成,並且它會鎖定其他預設cron工作,例如傳送電子郵件、產生網站地圖、客戶通知和其他自訂工作。

症狀

未執行cron個工作所執行的程式。 例如,產品更新未套用至小時,或客戶報告未收到電子郵件。

當您開啟cron_schedule資料庫表格時,您會看到狀態為missed的工作。

原因

之前,在我們的雲端環境中,Jenkins伺服器是用來執行cron個工作。 Jenkins一次只能執行一個作業的執行個體;因此,一次只能執行一個bin/magento cron:run處理序。

解決方案

  1. 連絡Adobe Commerce支援以啟用自行管理crons。

  2. 編輯Git分支中Adobe Commerce程式碼根目錄中的.magento.app.yaml檔案。 新增下列專案:

    code language-yaml
      crons:
      cronrun:
      spec: "* * * * *"
      cmd: "php bin/magento cron:run"
    
  3. 儲存檔案並將更新推送至測試和生產環境(與您在整合環境中執行此操作的方式相同)。

NOTE
沒有必要將存在多個cron:run的舊cron設定傳輸到新cron排程;如上所述新增的一般cron:run任務就足夠了。 不過,如果您有任何自訂工作,則需要轉移該工作。

檢查您是否啟用自行管理cron (僅適用於Cloud Pro測試和生產)

若要檢查自我管理的cron是否已啟用,請執行crontab -l命令並觀察結果:

  • 如果您能夠看到如下列的工作,則啟用自行管理cron:

    code language-bash
    username@hostname:~$ crontab -l    # Crontab is managed by the system, attempts to edit it directly will fail.
    SHELL=/etc/platform/username/cron-run    MAILTO=""    # m h dom mon dow job_name    * * * * * cronrun
    
  • 如果您無法看到工作並取得​ 「不允許您使用此程式」 ​錯誤訊息,則不會啟用自行管理的cron。

NOTE
上述檢查是否已啟用自行管理cron的命令不適用於入門計畫及開發/整合環境。

相關閱讀

recommendation-more-help
8bd06ef0-b3d5-4137-b74e-d7b00485808a