Cron件のタスクが他のグループからタスクをロックしています

この記事では、他のcron件のジョブをブロックする特定の長期的なcron件のジョブに関連するAdobe Commerce on cloud infrastructureの問題に対する解決策を提供します。

影響を受ける製品とバージョン

  • Adobe Commerce on cloud infrastructure Pro プランアーキテクチャ
  • 2019年5月以前のオンボーディング

イシュー

Adobe Commerce クラウド版では、複雑なcron個のタスク(長期実行タスク)がある場合、実行のために他のタスクがロックされる可能性があります。 例えば、インデクサーのタスクは、無効なインデクサーを再インデックスします。 完了までに数時間かかる場合があり、電子メールの送信、サイトマップの生成、顧客通知、その他のカスタムタスクなど、デフォルトのcron ジョブがロックされます。

症状:

cron ジョブによって実行されたプロセスは実行されません。 例えば、製品のアップデートは何時間も適用されないか、顧客がメールを受信していないと報告します。

cron_schedule データベース テーブルを開くと、missed ステータスのジョブが表示されます。

原因

以前、私たちのクラウド環境では、Jenkins サーバーを使用してcron ジョブを実行していました。 Jenkinsは、一度に1つのジョブのインスタンスのみを実行します。その結果、一度に1つのbin/magento cron:run プロセスのみが実行されます。

Solution

  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
commerce-knowledge-base-help