Cron Aufgaben sperren Aufgaben von anderen Gruppen

Dieser Artikel bietet eine Lösung für die Adobe Commerce zum Problem der Cloud-Infrastruktur im Zusammenhang mit bestimmten langfristigen cron Aufträgen, die andere cron Aufträge blockieren.

Betroffene Produkte und Versionen

  • Adobe Commerce on Cloud Infrastructure Pro-Planarchitektur
  • Vor Mai 2019 an Bord

Problem

Wenn Sie in Adobe Commerce for Cloud komplexe cron Aufgaben (langfristige Aufgaben) haben, werden diese möglicherweise andere Aufgaben für die Ausführung sperren. Beispielsweise werden durch die Aufgabe der Indexer invalidierte Indexer neu indiziert. Es kann einige Stunden dauern, bis andere standardmäßige cron-Aufträge, wie das Senden von E-Mails, das Generieren von Sitemaps, Kundenbenachrichtigungen und andere benutzerdefinierte Aufgaben, beendet werden.

Symptome:

Die von cron -Aufträgen ausgeführten Prozesse werden nicht ausgeführt. Beispielsweise werden Produktaktualisierungen nicht stundenlang angewendet oder Kunden melden, dass sie keine E-Mails erhalten.

Wenn Sie die Datenbanktabelle cron_schedule öffnen, sehen Sie die Aufträge mit dem Status missed .

Ursache

Zuvor wurde in unserer Cloud-Umgebung der Jenkins-Server verwendet, um cron Aufträge auszuführen. Jenkins führt jeweils nur eine Instanz eines Auftrags aus. Folglich wird jeweils nur ein bin/magento cron:run -Prozess ausgeführt.

Lösung

  1. Wenden Sie sich an den Adobe Commerce-Support , damit die Self-Managed crons aktiviert ist.

  2. Bearbeiten Sie die Datei ".magento.app.yaml" im Stammverzeichnis des Codes für Adobe Commerce in der Verzweigung "Git". Fügen Sie Folgendes hinzu:

    code language-yaml
      crons:
      cronrun:
      spec: "* * * * *"
      cmd: "php bin/magento cron:run"
    
  3. Speichern Sie die Datei und pushen Sie Aktualisierungen in den Staging- und Produktionsumgebungen (auf die gleiche Weise wie bei Integrationsumgebungen).

NOTE
Es ist nicht erforderlich, alte cron-Konfigurationen zu übertragen, bei denen mehrere cron:run vorhanden sind, um den neuen cron-Zeitplan zu erhalten. Die normale cron:run-Aufgabe, die wie oben beschrieben hinzugefügt wurde, reicht aus. Es ist jedoch erforderlich, Ihre benutzerdefinierten Aufträge zu übertragen, falls vorhanden.

Überprüfen Sie, ob Sie die selbst verwaltete cron-Funktion aktiviert haben (nur für Cloud Pro Staging und Produktion).

Um zu überprüfen, ob die selbst verwaltete cron aktiviert ist, führen Sie den Befehl crontab -l aus und beobachten Sie das Ergebnis:

  • Self-managed cron ist aktiviert, wenn Sie die Aufgaben sehen können, wie die folgenden:

    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
    
  • Die selbst verwaltete cron-Fehlermeldung ""kann nicht angezeigt werden, wenn Sie die Aufgaben nicht sehen können und die Fehlermeldung " Sie dürfen dieses Programm nicht verwenden" erhalten.

NOTE
Der oben erwähnte Befehl, um zu überprüfen, ob die selbstverwaltete cron aktiviert ist, gilt nicht für einen Starter-Plan und die Entwicklungs-/Integrationsumgebung.

Verwandtes Lesen

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