Cron uppgifter låser uppgifter från andra grupper

Den här artikeln innehåller en lösning för Adobe Commerce om molninfrastruktursproblem som rör vissa cron-jobb som är under lång tid och som blockerar andra cron-jobb.

Berörda produkter och versioner

  • Adobe Commerce om molninfrastruktur Pro planarkitektur
  • Inbyggt tidigare än maj 2019

Problem

Om du har komplexa cron-uppgifter (långkörda uppgifter) i Adobe Commerce för molnet kan de låsa andra uppgifter för körning. Indexerarens uppgift indexerar till exempel om ogiltiga indexerare. Det kan ta några timmar att slutföra och det låser andra standardjobb för cron, som att skicka e-post, generera webbplatskartor, kundmeddelanden och andra anpassade uppgifter.

Symtomen:

Processerna som körs av cron jobb utförs inte. Produktuppdateringar gäller t.ex. inte timmar eller så rapporterar kunderna att de inte får några e-postmeddelanden.

När du öppnar databastabellen cron_schedule ser du jobben med statusen missed.

Orsak

Tidigare användes Jenkins-servern i vår molnmiljö för att köra cron jobb. Jenkins kör bara en instans av ett jobb åt gången. Därför körs bara en bin/magento cron:run-process åt gången.

Lösning

  1. Kontakta Adobe Commerce support om du vill att självhanterade crons ska aktiveras.

  2. Redigera filen .magento.app.yaml i rotkatalogen för koden för Adobe Commerce i grenen Git. Lägg till följande:

    code language-yaml
      crons:
      cronrun:
      spec: "* * * * *"
      cmd: "php bin/magento cron:run"
    
  3. Spara filen och skicka uppdateringar till miljö för förproduktion och produktion (på samma sätt som för integreringsmiljöer).

NOTE
Det finns ingen anledning att överföra gamla cron-konfigurationer där det finns flera cron:run till det nya cron-schemat. Den vanliga cron:run-aktiviteten, som lagts till enligt ovan, räcker. Men du måste överföra dina anpassade jobb om du hade några.

Kontrollera om du har självhanterade cron aktiverat (endast för molnPro Staging and Production)

Om du vill kontrollera om den självhanterade cron är aktiverad kör du kommandot crontab -l och observerar resultatet:

  • Självhanterade cron är aktiverade om du kan se aktiviteterna, som följande:

    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
    
  • Den självhanterade cron är inte aktiverad om du inte kan se aktiviteterna och få felmeddelandet "du får inte använda det här programmet".

NOTE
Det kommando som anges ovan för att kontrollera om självhanterade cron är aktiverat gäller inte för en Starter-plan eller i utvecklings-/integreringsmiljön.

Relaterad läsning

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