Cron Auftrag ist im Status "Wird ausgeführt"stecken

Dieser Artikel enthält Lösungen für Adobe Commerce cron Aufträge werden nicht abgeschlossen und dauern in einem "laufenden"Status an, was andere verhindert cron Aufträge nicht ausgeführt werden. Dies kann verschiedene Gründe haben, z. B. Netzwerkprobleme, Anwendungsabstürze oder Probleme bei der Neubereitstellung.

Betroffene Produkte und Versionen

Adobe Commerce in der Cloud-Infrastruktur, alle Versionen

Symptom symptom

Symptome cron Folgende Aufträge müssen zurückgesetzt werden:

  • Eine große Anzahl von Aufträgen wird im cron_schedule queue
  • Die Site-Leistung nimmt ab
  • Aufträge werden nicht planmäßig ausgeführt

Lösungen solutions

Lösung zum Anhalten aller cron Aufträge gleichzeitig solution-stop-all-crons-at-once

WARNING
Ausführen dieses Befehls ohne die --job-code Optionseinstellungen all cron Aufträge, auch solche, die derzeit ausgeführt werden. Daher empfehlen wir, diese nur in Ausnahmefällen zu verwenden, z. B. nachdem Sie überprüft haben, dass alle cron Aufträge müssen zurückgesetzt werden. Bei der erneuten Bereitstellung wird dieser Befehl standardmäßig zum Zurücksetzen ausgeführt cron Aufträge, sodass sie sich nach der Sicherung der Umgebung entsprechend erholen. Vermeiden Sie die Verwendung dieser Lösung, wenn Indexer ausgeführt werden.

Um dieses Problem zu beheben, müssen Sie die cron Auftrag(e), der die cron:unlock Befehl. Dieser Befehl ändert den Status der cron Auftrag in der Datenbank, wodurch der Auftrag erzwungen wird, damit andere geplante Aufträge fortgesetzt werden können.

  1. Öffnen Sie ein Terminal und verwenden Sie Ihre SSH-Schlüssel zur Verbindung mit der betroffenen Umgebung.
  2. Rufen Sie die Anmeldeinformationen der MySQL-Datenbank ab: shell echo $MAGENTO_CLOUD_RELATIONSHIPS | base64 -d | json_pp
  3. Mit der Datenbank verbinden mysql : shell mysql -hdatabase.internal -uuser -ppassword main
  4. Wählen Sie die main Datenbank: shell use main
  5. Suchen nach allen Laufenden cron Aufträge: shell SELECT * FROM cron_schedule WHERE status = 'running';
  6. Kopieren Sie die job_code jedes Auftrags, der länger als üblich ausgeführt wird.
  7. Verwenden Sie die Zeitplan-IDs aus dem vorherigen Schritt, um bestimmte cron Aufträge: shell ./vendor/bin/ece-tools cron:unlock --job-code=<job_code_1> [... --job-code=<job_code_x>]

Lösung zum Anhalten einer einzelnen cron solution-stop-a-single-cron

  1. Öffnen Sie ein Terminal und verwenden Sie Ihre SSH-Schlüssel zur Verbindung mit der betroffenen Umgebung.

  2. Überprüfen Sie langwierige Aufgaben mit dem folgenden Befehl:

    date; ps aux | grep '[%]CPU\|cron\|magento\|queue' | grep -v 'grep\|cron -f'

  3. Wie in der Beispielausgabe unten sehen Sie in der Ausgabe das aktuelle Datum und die Liste der Prozesse. Die START gibt die Startzeit oder das Datum des Prozesses an:

    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
    
  4. Wenn Sie eine lange Ausführung sehen cron Aufträge, die den Bereitstellungsprozess blockieren können, können Sie den Prozess mit der kill Befehl. Sie können Prozess-ID (gefunden wird, PID -Spalte) und legen Sie diese PID im -Befehl, um den Prozess zu beenden.
    Die Prozess beenden Befehl:

    kill -9 <PID>

  5. Anschließend können Sie die Bereitstellung erneut durchführen, wenn Sie versuchen, die Bereitstellung erneut durchzuführen.

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