Managed Server

Support-Themen für alle virtuellen und dedizierten Server Lösungen

  Aktualisiert am 04.12.2020

Shopware 6 Background Queue Worker einrichten


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.


Deaktivierung der Frontend Message Queue Worker

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

Einrichtung der Message Queue Worker als systemd Service

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

Weiterführende Links


War dieser Beitrag hilfreich?

Kontakt aufnehmen

Kein passender Support-Beitrag gefunden? Wir helfen Dir gerne persönlich weiter.

Chatte mit uns Live Chat öffnen Montags - Freitags von 9.00 - 17.00 Uhr
Erstelle ein Ticket Support Ticket erstellen Kundencenter Anmeldung erforderlich
Schreibe uns eine E-Mail support@creoline.de Ohne Anmeldung möglich
Im Notfall steht Dir unsere Emergency Hotline rund um die Uhr unter der Rufnummer +49 (0) 2507 900 80 -34 zur Verfügung.
Kundenkonto erstellen Zum Kundencenter