Admin Worker Deaktivieren / Message Queue

Was ist die Message Queue?

Shopware verarbeitet standardmäßig alle Tasks asynchron. Dies hat den Vorteil, dass wichtige Prozesse unabhängig von unerwünschten Timeouts oder Systemabstürzen abgearbeitet werden können. Alle Tasks, die asynchron abgearbeitet werden, befinden sich in der sogenannten Message-Queue.

Was ist der Admin Worker?

In Shopware 6 werden die Message-Queues in der Administration vollautomatisch im Hintergrund durch den sogenannten "Admin Worker" abgearbeitet. Dies ermöglicht u.a. ein sehr schnelles Arbeiten im Admin.

Mögliche Leistungsprobleme

Diese Methode erfordert jedoch, dass die Administration über einen längeren Zeitraum geöffnet ist. Wenn eine große Anzahl von Benutzern an der Administration angemeldet ist, kann die CPU-Last sehr hoch werden. Dies kann die reibungslose Ausführung der Message-Queues stören. In solchen Fällen ist es ratsam, den Admin-Worker abzuschalten und die Prozesse über die CLI laufen zu lassen. Auf diese Weise werden Aufgaben auch dann erledigt, wenn niemand in der Administration angemeldet ist und eine hohe CPU-Last durch mehrere Benutzer wird ebenfalls vermieden. Diese Vorgehensweise ist besonders bei größeren Shops sinnvoll.

Admin-Worker deaktivieren und CLI-Worker einrichten

Führe dazu folgende Schritte durch, um den Admin-Worker zu deaktivieren.

Die Deaktivierung des Admin-Workers ist im Standard von Shopware nicht vorgesehen, weswegen manuelle Anpassungen auf Server-Ebene vorgenommen werden müssen. Wende Dich hierzu im Zweifel am besten an Deinen Hoster.

Schritt 1: Datei anpassen

Um den Admin-Worker zu deaktivieren muss die Änderung in der Datei shopware.yaml vorgenommen werden. Du findest diese in Deiner Shopware-Installation unter config/packages/. Deaktiviere den Admin-Worker über "false" und speichere die Datei ab.


# config/packages/shopware.yaml
shopware:
    admin_worker:
        enable_admin_worker: false

Schritt 2: CLI-Befehle ausführen


bin/console messenger:consume default --time-limit=60

bin/console scheduled-task:run --time-limit=60

Wir empfehlen bei den oben stehenden Befehlen das time-limit=60, sodass der Befehl für maximal 60 Sekunden ausgeführt wird. Alternativ kannst Du anstatt eines Zeitlimits auch ein Speicherlimit definieren. Mehr Informationen findest Du in unserer Developer Doku.

Wichtig ist bei diesem Vorgang, dass die Befehle regelmäßig ausgeführt werden, damit die Message Queue kontinuierlich abgearbeitet wird. Dies kann zum Beispiel durch das Anlegen eines Cronjobs auf dem Server erreicht werden. Wende Dich hierzu an Deinen Hoster.

War dieser Artikel hilfreich?