Support-Themen für alle virtuellen und dedizierten Server Lösungen
Shopware 6 verwendet für die Verarbeitung von Hintergrundaufgaben sowie für die Verarbeitung von wiederkehrenden Aufgaben sogenannte Message Queue Worker. In der Standard-Konfiguration werden diese über den angemeldeten Administrator im Browser ausgeführt. Sobald mehr als ein Administrator angemeldet ist, werden diese Message Queue Worker mehrfach ausgeführt und es kann zu einer sehr hohen CPU Last sowie zu Problemen bei der Ausführung von PHP FPM kommen.
Um dieses Problem dauerhaft zu lösen, bietet Shopware 6 die Möglichkeit die Ausführung dieser Message Queue Worker in den Hintergrund zu verlagern, genauer gesagt als CLI Command.
Um die Shopware 6 Message Queue Worker für die angemeldeten Administratoren zu deaktivieren muss eine shopware.yaml Config Datei in dem folgendem Shopware Document-Root Verzeichnis angelegt werden:
/config/packages/shopware.yaml
Tipp:
Bei unseren Managed Shopware Servern befindet sich das korrekte Verzeichnis zum Shopware Document-Root unter dem absoluten Pfad:
/var/www/vhosts/meine-shop-domain.de/httpdocs/
# /var/www/vhosts/meine-shop-domain.de/httpdocs/config/packages/shopware.yaml
shopware:
admin_worker:
enable_admin_worker: false
Nachdem die Config-Datei erstellt wurde, muss der Shopware Cache geleert werden, damit die neue Konfigurationsdatei aktiviert wird:
bin/console cache:clear
Bei unseren Managed Shopware Servern stehen verschiedene PHP-Binaries für die Ausführung der CLI Konsole zur Verfügung. Um den Cache mit der PHP 7.4 CLI zu leeren muss folgendes Command ausgeführt werden:
/opt/plesk/php/7.4/bin/php /var/www/vhosts/meine-shop-domain.de/httpdocs/bin/console cache:clear
Um eine dauerhafte Ausführung der Message Queue Worker zu gewährleisten, empfehlen wir die Einrichtung als systemd Service. Hierzu müssen zwei Service Dateien angelegt werden:
touch /etc/systemd/system/shopware_consumer.service
touch /etc/systemd/system/shopware_scheduled_tasks.service
Anschließend wird der Shopware Message Queue Consumer wie folgt definiert:
# /etc/systemd/system/shopware_consumer.service
[Unit]
Description=Shopware Message Queue Consumer
After=mysql.service
[Service]
Type=simple
User=ssh_example_user
Restart=always
ExecStart=/opt/plesk/php/7.4/bin/php /var/www/vhosts/meine-shop-domain.de/httpdocs/bin/console messenger:consume --time-limit=120 --memory-limit=512M
Wichtig:
Achte auf die korrekte Verzeichnis und User Angabe für deine Shopware 6 Installation. In diesem Beispiel befindet sich die Installation in dem Verzeichnis /var/www/vhosts/meine-shop-domain.de/. Dieses Verzeichnis dient nur als Beispiel und muss auf den korrekten Pfad deiner Installation angepasst werden.
Neben dem Consumer Service wird zusätzlich noch der Service für die wiederkehrenden Aufgaben benötigt:
# /etc/systemd/system/shopware_scheduled_tasks.service
[Unit]
Description=Shopware Scheduled Tasks Runner
After=mysql.service
[Service]
Type=simple
User=ssh_example_user
Restart=always
ExecStart=/opt/plesk/php/7.4/bin/php /var/www/vhosts/meine-shop-domain.de/httpdocs/bin/console scheduled-task:run --time-limit=120 --memory-limit=512M
Wichtig:
Auch bei dem Scheduled Tasks Service muss das korrekte Verzeichnis und der richtige User für deine Shopware 6 Installation angegeben werden.
Nachdem die beiden Services eingerichtet wurden, müssen diese nur noch gestartet werden:
systemctl start shopware_consumer
systemctl start shopware_scheduled_tasks
systemctl enable shopware_consumer
systemctl enable shopware_scheduled_tasks