Cron -taak blijft vastzitten in de status "actief"

Dit artikel biedt oplossingen voor het feit dat Adobe Commerce cron -taken niet zijn voltooid en in de status "actief" blijven, waardoor andere cron -taken niet kunnen worden uitgevoerd. Dit kan om een aantal redenen, zoals netwerkkwesties, toepassingsneerstortingen, re-plaatsingskwesties gebeuren.

Betrokken producten en versies

Adobe Commerce op cloud-infrastructuur, alle versies

Symptoom symptom

Symptomen van cron -taken die opnieuw moeten worden ingesteld zijn:

  • Er wordt een groot aantal taken weergegeven in de cron_schedule -wachtrij
  • De prestaties van de site gaan achteruit
  • Taken worden niet volgens schema uitgevoerd

Oplossingen solutions

Oplossing om alle cron taken tegelijk te stoppen solution-stop-all-crons-at-once

WARNING
Het in werking stellen van dit bevel zonder de --job-code optie stelt alle cron banen, met inbegrip van die momenteel in werking, zodat adviseren wij gebruikend het slechts in uitzonderlijke gevallen, zoals nadat u hebt geverifieerd dat alle cron banen moeten worden teruggesteld. Herimplementatie voert deze opdracht standaard uit om cron -taken opnieuw in te stellen, zodat ze op de juiste wijze worden hersteld nadat de omgeving weer is hersteld. Gebruik deze oplossing niet als indexeerprogramma's worden uitgevoerd.

U kunt dit probleem oplossen door de cron taak(en) opnieuw in te stellen met de opdracht cron:unlock . Met deze opdracht wijzigt u de status van de cron -taak in de database, waardoor de taak gedwongen wordt om andere geplande taken te laten doorgaan.

  1. Open een terminal en gebruik uw sleutels van SSHom met het beïnvloede milieu te verbinden.
  2. Krijg de MySQL gegevensbestandgeloofsbrieven: shell echo $MAGENTO_CLOUD_RELATIONSHIPS | base64 -d | json_pp
  3. Verbind met het gegevensbestand gebruikend mysql: shell mysql -hdatabase.internal -uuser -ppassword main
  4. Selecteer de main -database: shell use main
  5. Alle actieve cron taken zoeken: shell SELECT * FROM cron_schedule WHERE status = 'running';
  6. Kopieer de job_code van elke taak die langer dan normaal wordt uitgevoerd.
  7. Gebruik de schema-id's van de vorige stap om specifieke cron -taken te ontgrendelen: shell ./vendor/bin/ece-tools cron:unlock --job-code=<job_code_1> [... --job-code=<job_code_x>]

Oplossing voor het stoppen van één oplossing cron solution-stop-a-single-cron

  1. Open een terminal en gebruik uw sleutels van SSHom met het beïnvloede milieu te verbinden.

  2. Controleer lange lopende taken door het volgende bevel te gebruiken:

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

  3. In de output, zoals in de steekproefoutput hieronder, zult u huidige datum en lijst van processen zien. In de kolom START wordt de begintijd of -datum van het proces weergegeven:

    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. Als u lange cron banen ziet die het proces van de blokplaatsing kunnen, kunt u het proces beëindigen gebruikend het kill bevel. U kunt identiteitskaart van het Proces identificeren (vond de PID kolom), en dan zetten dat PID in het bevel om het proces te doden.
    Het bevel van het het processen van de doden is:

    kill -9 <PID>

  5. Dan kunt u heropstellen, als u probeerde om opnieuw op te stellen.

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