Cron タスクは他のグループからタスクをロックします
この記事では、特定の長時間実行される cron ジョブが他の cron ジョブをブロックすることに関連する、クラウドインフラストラクチャ上のAdobe Commerceの問題のソリューションを提供します。
影響を受ける製品とバージョン
- Adobe Commerce on cloud infrastructure Pro プランアーキテクチャ
- 2019 年 5 月以前にオンボード
問題
Adobe Commerce for cloud では、複雑な cron タスク(長時間実行タスク)がある場合、他のタスクがロックされて実行されないことがあります。 例えば、インデクサーのタスクは、無効化されたインデクサーのインデックスを再作成します。 終了までに数時間かかる場合があり、メールの送信、サイトマップの生成、顧客通知、その他のカスタムタスクなど、他のデフォルトの cron ジョブがロックされます。
症状 :
cron のジョブで実行されたプロセスは実行されません。 例えば、製品のアップデートが時間に適用されない、顧客からメールが届かないと報告される、などの場合です。
cron_schedule
データベース テーブルを開くと、missed
の状態のジョブが表示されます。
原因:
以前は、クラウド環境では、cron ジョブの実行に Jenkins サーバーを使用していました。 Jenkins は一度に 1 つのジョブのインスタンスのみを実行します。その結果、一度に実行される bin/magento cron:run
プロセスは 1 つだけです。
解決策
-
自己管理サー crons スを有効にするには、Adobe Commerce サポートにお問い合わせください。
-
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 を使用することはできません」というエラーメッセージが表示される場合は 自己管理 は有効になっていません。