Cron Aufgaben Sperren von Aufgaben aus anderen Gruppen
Dieser Artikel bietet eine Lösung für das Adobe Commerce-Problem mit der Cloud-Infrastruktur im Zusammenhang mit bestimmten langfristigen cron, die andere cron blockieren.
Betroffene Produkte und Versionen
- Adobe Commerce auf Cloud-Infrastruktur Pro Planarchitektur
- Vorher als Mai 2019 an Bord
Problem
Wenn Sie in Adobe Commerce für Cloud Manager komplexe cron (langfristige Aufgaben) haben, können diese andere Aufgaben für die Ausführung sperren. Beispielsweise indiziert die Aufgabe der Indexer ungültig gemachte Indexer neu. Es kann einige Stunden dauern, bis der Vorgang abgeschlossen ist, und es werden andere standardmäßige cron wie das Senden von E-Mails, das Generieren von Sitemaps, Kundenbenachrichtigungen und andere benutzerdefinierte Aufgaben gesperrt.
Symptome:
Die von cron Aufträgen ausgeführten Prozesse werden nicht ausgeführt. Beispielsweise werden Produktaktualisierungen stundenlang nicht angewendet oder Kunden melden, dass sie keine E-Mails erhalten.
Wenn Sie die cron_schedule
Datenbanktabelle öffnen, werden die Aufträge mit dem Status missed
angezeigt.
Ursache
Zuvor wurde in unserer Cloud-Umgebung der Jenkins-Server zum Ausführen von cron verwendet. Jenkins führt nur jeweils eine Instanz eines Auftrags aus. Infolgedessen wird jeweils nur ein bin/magento cron:run
ausgeführt.
Lösung
-
Wenden Sie sich an den Adobe CommerceSupport, um die selbstverwaltete crons aktivieren zu lassen.
-
Bearbeiten Sie die
.magento.app.yaml
im Stammverzeichnis des Codes für Adobe Commerce in der Git. Folgendes hinzufügen:code language-yaml crons: cronrun: spec: "* * * * *" cmd: "php bin/magento cron:run"
-
Speichern Sie die Datei und übertragen Sie Aktualisierungen auf die Staging- und Produktionsumgebungen (auf die gleiche Weise wie bei Integrationsumgebungen).
cron:run
vorhanden sind, auf den neuen cron-Zeitplan zu übertragen. Die reguläre cron:run
-Aufgabe, die wie oben beschrieben hinzugefügt wurde, ist ausreichend. Es ist jedoch erforderlich, Ihre benutzerdefinierten Aufträge zu übertragen, falls vorhanden.Überprüfen Sie, ob Sie Self-Managed cron 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 crontab -l
Befehl aus und beobachten Sie das Ergebnis:
-
Die selbstverwaltete cron ist aktiviert, wenn Sie die Aufgaben wie die folgenden sehen können:
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 selbstverwaltete cron wird nicht aktiviert, wenn Sie die Aufgaben nicht sehen können und die Fehlermeldung Sie dürfen dieses Programm nicht verwenden erhalten.
Verwandtes Lesen
- Setup cron jobs in unserer Entwicklerdokumentation
- Best Practices zum Ändern von Datenbanktabellen im Commerce-Implementierungs-Playbook