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
-
Adobe Commerce サポート に連絡して、セルフマネージド cronsを有効にしてください。
-
Git ブランチのAdobe Commerce コードのルート ディレクトリにある
.magento.app.yamlファイルを編集します。 以下を追加します。code language-yaml crons: cronrun: spec: "* * * * *" cmd: "php bin/magento cron:run" -
ファイルを保存し、ステージング環境と実稼動環境に更新をプッシュします(統合環境と同じ方法で)。
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は有効になっていません。