Shopware Performance

Shopware Performance und Serverkonfiguration prüfen

Eine gezielte Shopware Performance Optimierung beginnt mit der Serverkonfiguration und den Hintergrundprozessen. Diese Anleitung zeigt, wie sich die Performance von Shopware 6 systematisch prüfen und optimieren lässt – von PHP und OPcache über Admin Worker, Message Queue und Cronjobs bis zu Redis, Datenbank, Suche und Indexierung.

Kein zusätzliches Prüfplugin erforderlich

Alle beschriebenen Punkte lassen sich direkt über Shopware-Konfiguration, Kommandozeile, PHP und Hosting prüfen. Die Anleitung setzt keine bestimmte Erweiterung voraus.

Fehlerbild

Shopware reagiert langsam, Hintergrundprozesse benötigen lange oder Serverressourcen werden unnötig stark beansprucht.

Ziel

Shopware Performance systematisch verbessern, unnötige Last reduzieren und Hintergrundprozesse zuverlässig ausführen.

Wichtig

Nicht jede Optimierung ist für jeden Shop sinnvoll. Shopgröße, Hosting, Sortiment und eingesetzte Funktionen sind entscheidend.

Inhaltsverzeichnis

  1. Typische Shopware-Performance-Engpässe
  2. Performance-Optimierungen richtig einordnen
  3. Admin Worker durch CLI-Worker ersetzen
  4. APP_URL prüfen
  5. MailVariables-Updates bewerten
  6. Increment Storage prüfen
  7. Logging reduzieren
  8. E-Mails über die Queue senden
  9. PHP und OPcache optimieren
  10. Queue-Speicher auswählen
  11. Symfony Secrets bewerten
  12. Elasticsearch oder OpenSearch
  13. Product Stream Indexing
  14. Sichere Umsetzungsreihenfolge
  15. Abschlusskontrolle

Shopware Performance optimieren: Wo entstehen die häufigsten Engpässe?

Eine erfolgreiche Shopware Performance Optimierung beginnt nicht mit einzelnen Tuning-Werten, sondern mit der Frage, welcher Bereich den Shop tatsächlich ausbremst. In Shopware 6 entstehen Performanceprobleme häufig nicht an einer einzigen Stelle, sondern durch das Zusammenspiel von PHP, Datenbank, Cache, Hintergrundprozessen und Serverkonfiguration.

Besonders häufig sollten zunächst PHP und OPcache, Message Queue und Worker, Scheduled Tasks und Cronjobs sowie Datenbank- und Cache-Systeme geprüft werden. Bei größeren Shops kommen Produktsuche, Indexierung, Redis oder externe Message Broker hinzu.

Bereich Typisches Problem Mögliche Auswirkung
PHP / OPcache Unpassende PHP-Werte oder falsche PHP-Version Langsame Requests und unnötig hohe CPU-Last
Message Queue / Worker Worker fehlen oder Nachrichten stauen sich Verzögerte Prozesse und steigende Queue-Länge
Cronjobs / Scheduled Tasks Automatische Prozesse laufen nicht zuverlässig Indexierung, Wartungsaufgaben und Hintergrundjobs bleiben liegen
Datenbank / Redis Zu viele Schreibzugriffe oder ungeeignete Speicherstrategie Hohe Datenbanklast und langsamere Administration
Suche / Indexierung Große Sortimente oder aufwendige dynamische Produktgruppen Hohe Last bei Änderungen und Reindexierung
Erst messen, dann optimieren

Eine vermeintliche Shopware-Performance-Optimierung bringt wenig, wenn der tatsächliche Engpass an anderer Stelle liegt. Deshalb sollten Antwortzeiten, Serverlast, Queue-Länge und Logs vor und nach jeder Änderung verglichen werden.

1. Shopware Performance-Optimierungen richtig einordnen

Nicht jede mögliche Optimierung ist für jeden Shop sinnvoll. Einige Einstellungen verbessern nahezu jeden produktiven Shopware-Shop, andere lohnen sich erst bei hoher Last, großen Sortimenten oder zusätzlicher Infrastruktur.

Prüfpunkt Einordnung Priorität
Admin Worker Für Produktivsysteme durch CLI-Worker ersetzen Hoch
BusinessEventHandler Logging auf DEBUG Im Liveshop mindestens auf WARNING reduzieren Hoch
PHP zend.assertions Produktivwert prüfen Hoch
OPcache und Realpath Cache PHP-Laufzeit optimieren Mittel bis hoch
E-Mails über Message Queue Sinnvoll, wenn die Queue zuverlässig läuft Mittel
Redis oder RabbitMQ Vor allem bei größerer Queue oder mehreren Workern Abhängig von Last
Elasticsearch oder OpenSearch Nicht für jeden kleinen Shop erforderlich Abhängig vom Sortiment
Product Stream Indexing Nur nach Prüfung dynamischer Produktgruppen deaktivieren Abhängig von Nutzung
Nicht alle Optimierungen gleichzeitig umsetzen

Änderungen an Queue, Redis, PHP und Indexierung beeinflussen mehrere Prozesse. Jede Maßnahme einzeln umsetzen, Cache leeren, Worker neu starten und danach Shop sowie Logs prüfen.

2. Admin Worker durch CLI-Worker ersetzen

Der Admin Worker verarbeitet Nachrichten nur, wenn die Shopware-Administration geöffnet ist. Auf einem Produktivsystem sollten Message Queue und Scheduled Tasks unabhängig von angemeldeten Benutzern laufen.

Admin Worker deaktivieren

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

Message Queue starten

Shopware 6.5 und neuer
/usr/bin/php bin/console messenger:consume async low_priority --time-limit=60 --memory-limit=512M

Scheduled Tasks starten

Shopware CLI
/usr/bin/php bin/console scheduled-task:run --time-limit=60
Admin Worker erst nach erfolgreichem CLI-Test abschalten

Laufen Queue und Scheduled Tasks nicht serverseitig, bleiben nach der Deaktivierung Hintergrundaufgaben vollständig liegen.

Ausführliche Anleitungen: Shopware Message Queue hängt und Shopware Cronjobs prüfen .

3. APP_URL und externe Prüfung kontrollieren

Shopware prüft beim Laden der Administration, ob die in der Konfiguration hinterlegte APP_URL von außen erreichbar ist. Diese URL wird auch von externen Apps verwendet.

APP_URL prüfen

.env.local
APP_URL="https://www.beispiel-shop.de"
  • HTTPS und Domain sind korrekt.
  • Die URL ist von außen erreichbar.
  • Es entsteht keine unerwartete Weiterleitung.
  • Apps funktionieren mit dieser Domain.
  • Staging- und Livesystem verwenden unterschiedliche korrekte Werte.

Externe Prüfung nur bei korrekter APP_URL deaktivieren

.env.local
APP_URL_CHECK_DISABLED=1
Die Prüfung nicht zum Verdecken eines Konfigurationsfehlers abschalten

Ist die APP_URL falsch oder intern nicht erreichbar, können Shopware-Apps und externe Dienste weiterhin fehlschlagen.

4. Automatische MailVariables-Updates bewerten

Shopware kann verfügbare Variablen für E-Mail-Vorlagen automatisch aktualisieren. Auf produktiven Systemen erzeugt diese Prüfung zusätzliche Arbeit und kann deaktiviert werden, wenn Vorlagen kontrolliert gepflegt und bei Änderungen bewusst aktualisiert werden.

Kein pauschaler Pflichtwert

Ob diese Funktion deaktiviert werden sollte, hängt von Shopware-Version, verwendeten Vorlagen und Deployment-Prozess ab. Vor einer Änderung bestehende Mailvorlagen und Testversand sichern.

5. Increment Storage aus der Datenbank auslagern

Der Increment Storage speichert Zähler und Fortschrittsstände, die unter anderem in der Administration angezeigt werden. Bei hoher Aktivität erzeugt die Speicherung in MySQL zusätzliche Schreibzugriffe.

Speicher Geeignet für Hinweis
MySQL Kleine und einfache Installationen Keine zusätzliche Infrastruktur erforderlich
Array Flüchtige Werte innerhalb eines Prozesses Nicht prozessübergreifend dauerhaft
Redis Produktivsysteme mit vorhandener Redis-Infrastruktur Schneller gemeinsamer Speicher für mehrere Prozesse
Redis nur mit stabiler Betriebsumgebung einsetzen

Redis muss überwacht, erreichbar und passend konfiguriert sein. Eine unzuverlässige Redis-Verbindung verschiebt das Problem lediglich auf einen zusätzlichen Dienst.

6. BusinessEventHandler-Logging reduzieren

Ein produktiver Shop sollte nicht dauerhaft mit ausführlichem DEBUG-Logging betrieben werden. Umfangreiche Protokollierung erhöht Schreibzugriffe, Logvolumen und Auswertungsaufwand.

  • APP_ENV steht auf prod.
  • Log-Level ist mindestens WARNING, sofern keine gezielte Fehlersuche läuft.
  • Temporäres DEBUG-Logging wird nach der Diagnose zurückgesetzt.
  • Logrotation und verfügbarer Speicherplatz sind eingerichtet.
.env.local
APP_ENV=prod
DEBUG nicht dauerhaft im Liveshop verwenden

Debug-Ausgaben können sehr große Logdateien erzeugen und sensible technische Informationen sichtbar machen.

7. E-Mails über die Message Queue senden

Shopware versendet E-Mails standardmäßig synchron. Die Übergabe an die Message Queue kann Antwortzeiten verbessern, weil die eigentliche Zustellung im Hintergrund erfolgt.

config/packages/framework.yaml
framework:
    mailer:
        message_bus: 'messenger.default_bus'
Nur mit zuverlässigem Queue-Worker aktivieren

Läuft die Message Queue nicht dauerhaft, werden Bestell- und Statusmails verspätet oder gar nicht versendet.

Weitere Prüfung: Shopware-Bestellmails werden nicht versendet .

8. PHP und OPcache für Shopware Performance optimieren

PHP hat direkten Einfluss auf die Shopware Performance. Die relevanten Werte müssen in der tatsächlich verwendeten PHP-FPM-Konfiguration gesetzt werden. CLI und Webserver können unterschiedliche php.ini-Dateien laden.

PHP-Wert Typische Produktionsempfehlung Wirkung
zend.assertions -1 Assertions werden im Produktivbetrieb nicht erzeugt
opcache.enable_file_override 1 Optimiert bestimmte Dateioperationen über OPcache
opcache.interned_strings_buffer Mindestens 20 MB als Ausgangswert Mehr Speicher für wiederkehrende Zeichenketten
realpath_cache_ttl Mindestens 3600 Sekunden als Ausgangswert Dateipfade müssen seltener neu aufgelöst werden
zend.detect_unicode 0, falls die Option noch vorhanden ist Veraltete Einstellung ohne Nutzen im Produktivbetrieb

Aktuelle Werte anzeigen

PHP CLI
/usr/bin/php -r "
foreach ([
    'zend.assertions',
    'opcache.enable_file_override',
    'opcache.interned_strings_buffer',
    'realpath_cache_ttl',
    'zend.detect_unicode'
] as $key) {
    echo $key, ' = ', ini_get($key), PHP_EOL;
}
"
Nicht verfügbare Option ist nicht automatisch ein Fehler

Einzelne ältere PHP-Direktiven können in aktuellen PHP-Versionen entfernt oder wirkungslos sein. Maßgeblich sind PHP-Version, geladene Konfiguration und tatsächliche Ausgabe.

Ausführliche Anleitung: Shopware PHP-Version prüfen .

9. Datenbank-Queue, Redis und RabbitMQ vergleichen

Shopware verwendet standardmäßig den Doctrine-Transport und speichert Queue-Nachrichten in der Datenbank. Das ist einfach, skaliert aber bei vielen Nachrichten und mehreren parallelen Workern schlechter als ein spezialisierter Broker.

Transport Geeignet für Bewertung
Doctrine / Datenbank Kleine bis mittlere Shops mit begrenzter Queue-Last Einfach, aber zusätzliche Datenbanklast
Redis Vorhandene Redis-Infrastruktur und höhere Queue-Last Schnell, benötigt stabilen externen Dienst
RabbitMQ Viele Nachrichten, mehrere Worker und komplexere Infrastruktur Spezialisierter Message Broker mit höherem Betriebsaufwand
Warnung bei Doctrine ist nicht automatisch kritisch

Ein kleiner Shop mit wenigen Nachrichten benötigt nicht zwingend RabbitMQ. Entscheidend sind Queue-Wachstum, Worker-Anzahl, Datenbanklast und gemessene Engpässe.

10. Symfony Secrets nur bei Nichtverwendung deaktivieren

Symfony Secrets verschlüsselt Umgebungswerte und entschlüsselt sie beim Start der Anwendung. Wird diese Funktion nicht verwendet, kann sie deaktiviert werden, um geringe zusätzliche Arbeit beim Booten zu sparen.

config/packages/framework.yaml
framework:
    secrets:
        enabled: false
Vorher Nutzung prüfen

Werden Secrets tatsächlich eingesetzt, darf die Funktion nicht deaktiviert werden. Der Performancegewinn ist gering und rechtfertigt keinen Ausfall verschlüsselter Konfigurationen.

11. Elasticsearch oder OpenSearch bei großen Shopware-Shops prüfen

Eine externe Suchmaschine kann bei großen Sortimenten, komplexer Suche und hoher Last deutliche Vorteile bieten. Für kleine Shops ist sie jedoch keine zwingende Voraussetzung und erhöht Betriebsaufwand, Überwachung und Speicherbedarf.

  • Produktanzahl und Suchlast messen
  • Funktionsumfang der Shopware-Edition prüfen
  • Kompatible Elasticsearch- oder OpenSearch-Version wählen
  • Indexierung und Queue-Verarbeitung einrichten
  • Ausfallverhalten und Monitoring planen
  • Suche nach dem Aufbau fachlich testen
Optionale Ausbaustufe

Bei einem kleinen Shop ist Elasticsearch oder OpenSearch häufig nicht erforderlich. Die externe Suche ist eine mögliche Ausbaustufe, kein genereller Pflichtbestandteil.

12. Product Stream Indexing bewusst deaktivieren

Der Product Stream Indexer ordnet Produkte dynamischen Produktgruppen zu und ermittelt, welche Kategorieseiten bei Produktänderungen betroffen sind. Bei großen Sortimenten oder häufigen Produktupdates kann dieser Prozess viel Last erzeugen.

Shopware 6.6.10 und neuer
shopware:
    product_stream:
        indexing: false
Funktionale Nachteile beachten

Nach der Deaktivierung werden betroffene Kategorieseiten bei Produktänderungen nicht sofort neu invalidiert. Außerdem kann die Regel „Position in dynamischer Produktgruppe“ bei Warenkorbpositionen nicht wie zuvor ausgewertet werden.

Diese Optimierung eignet sich nur, wenn dynamische Produktgruppen, Cache-Laufzeiten und betroffene Regeln vorher geprüft wurden.

13. Sichere Reihenfolge für die Shopware Performance Optimierung

  1. Vollständiges Backup erstellen.
  2. Aktuelle Shopware-, PHP- und Plugin-Version dokumentieren.
  3. Aktuelle Serverkonfiguration und Ausgangswerte dokumentieren.
  4. CLI-Worker und Scheduled Tasks zuverlässig einrichten.
  5. Admin Worker deaktivieren.
  6. Logging und APP_URL prüfen.
  7. PHP-Werte mit dem Hoster anpassen.
  8. E-Mail-Queue erst nach stabilem Worker aktivieren.
  9. Redis oder RabbitMQ nur nach Lastanalyse einführen.
  10. Product Stream Indexing nur nach Funktionsprüfung deaktivieren.
  11. Cache leeren und PHP-FPM kontrolliert neu laden.
  12. Storefront, Administration, Checkout und Logs prüfen.
Shopware Cache neu aufbauen
/usr/bin/php bin/console cache:clear
/usr/bin/php bin/console cache:warmup
Änderungen einzeln messen

Nach jeder Maßnahme Antwortzeiten, Serverlast, Queue-Länge und Logs vergleichen. Nur dadurch ist erkennbar, welche Shopware-Performance-Optimierung im konkreten Shop tatsächlich einen Vorteil bringt.

14. Abschlusskontrolle nach der Performance-Optimierung

  • Backup und Rückweg sind vorhanden.
  • Admin Worker wurde erst nach CLI-Worker-Test deaktiviert.
  • Message Queue und Scheduled Tasks laufen automatisch.
  • APP_URL ist korrekt und von außen erreichbar.
  • Produktivsystem läuft nicht dauerhaft mit DEBUG-Logging.
  • E-Mail-Queue wurde mit Testbestellungen geprüft.
  • Web-PHP und CLI-PHP verwenden passende Werte.
  • OPcache und Realpath Cache sind aktiv und passend dimensioniert.
  • Queue-Transport passt zur tatsächlichen Last.
  • Redis oder RabbitMQ wird überwacht.
  • Elasticsearch oder OpenSearch wurde nur bei Bedarf eingerichtet.
  • Product Stream Indexing wurde funktional bewertet.
  • Cache wurde neu aufgebaut.
  • Storefront, Administration und Checkout funktionieren.
  • Shopware- und Server-Logs bleiben unauffällig.
Shopware Performance geprüft

Die Optimierung ist abgeschlossen, wenn Hintergrundprozesse stabil laufen, keine Geschäftsprozesse beeinträchtigt werden und Verbesserungen anhand von Messwerten nachvollziehbar sind.

Häufige Fragen zur Shopware Performance

Was bringt eine Shopware Performance Optimierung?

Ziel ist nicht nur eine schnellere Storefront. Auch Administration, Queue-Verarbeitung, Indexierung und Serverauslastung können verbessert werden. Entscheidend ist, zunächst den tatsächlichen Engpass zu identifizieren.

Müssen alle genannten Optimierungen umgesetzt werden?

Nein. Redis, RabbitMQ, Elasticsearch und eine deaktivierte Product-Stream-Indexierung sind nicht für jeden Shop erforderlich. Entscheidend sind Last, Sortiment, Infrastruktur und tatsächlich gemessene Engpässe.

Sollte der Admin Worker in jedem Liveshop deaktiviert werden?

Für einen stabilen Produktivbetrieb ist ein serverseitiger CLI-Worker vorzuziehen. Der Admin Worker darf aber erst abgeschaltet werden, nachdem Queue und Scheduled Tasks zuverlässig laufen.

Ist die Datenbank-Queue grundsätzlich falsch?

Nein. Sie ist einfach und für kleinere Installationen oft ausreichend. Bei hoher Last und mehreren Workern kann ein externer Broker besser skalieren.

Braucht jeder Shop Elasticsearch oder OpenSearch?

Nein. Der Nutzen hängt von Produktmenge, Suchanforderungen, Edition und Serverinfrastruktur ab.

Kann ich E-Mails ohne Weiteres über die Queue senden?

Nur wenn der Queue-Worker dauerhaft überwacht läuft. Andernfalls werden wichtige Kunden- und Bestellmails verzögert.

Warum ändern sich PHP-Werte trotz Anpassung nicht?

Webserver, PHP-FPM, CLI und Cronjobs können unterschiedliche Konfigurationsdateien verwenden. Die tatsächlich geladene php.ini muss für jeden Bereich separat geprüft werden.

Verwandte Shopware-Anleitungen

Shopware Performance und Serverkonfiguration prüfen lassen

Ich prüfe Worker, Queue, PHP, OPcache, Redis, Logging, Indexierung und Serverkonfiguration direkt in der bestehenden Shopware-Installation und grenze Performance-Engpässe gezielt ein.

Technische Prüfung anfragen
Stand: August 2026 · Empfehlungen müssen an Shopware-Version, Shopgröße, Edition, Hosting und tatsächlich eingesetzte Funktionen angepasst werden.