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
-
Wenden Sie sich an den Adobe Commerce-Support , damit die Self-Managed crons aktiviert ist.
-
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"
-
Speichern Sie die Datei und pushen Sie Aktualisierungen in den Staging- und Produktionsumgebungen (auf die gleiche Weise wie bei Integrationsumgebungen).
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.
Verwandtes Lesen
- Richten Sie cron jobs in unserer Entwicklerdokumentation ein.
- Best Practices für die Änderung von Datenbanktabellen im Playbook für die Commerce-Implementierung