PHP 8 Performance-Tuning: OpCache und JIT erklärt

Backend2026-09-24TryQuickToolBox

Ihre PHP 8-Anwendung fühlt sich unter Last träge an. Sie haben Abfragen optimiert und Caching hinzugefügt, aber die Antwortzeiten bleiben schleppend. Der Übeltäter könnte der Ausführungs-Overhead von PHP selbst sein. Zwei leistungsstarke Funktionen – OpCache und JIT – können Ihren Code drastisch beschleunigen, aber nur bei korrekter Konfiguration. Dieser Leitfaden erklärt, wie sie funktionieren und wie Sie sie für reale Workloads optimieren.

Was ist OpCache und warum ist es wichtig

PHP ist eine interpretierte Sprache: Jede Anfrage parst und kompiliert normalerweise Ihre Quelldateien in Bytecode, bevor sie ausgeführt wird. OpCache speichert diesen kompilierten Bytecode im Shared Memory, sodass nachfolgende Anfragen das Parsen und Kompilieren überspringen. Das Ergebnis? Geringere CPU-Auslastung und schnellere Antwortzeiten.

OpCache ist in vielen Produktionsumgebungen standardmäßig aktiviert, aber die Standardeinstellungen sind konservativ. Durch Tuning können Sie bei CPU-intensiven Anwendungen 2–3x höheren Durchsatz erzielen.

Wichtige OpCache-Konfigurationsdirektiven

Empfohlene OpCache-Einstellungen für die Produktion

; php.ini
opcache.enable=1
opcache.memory_consumption=256
opcache.max_accelerated_files=20000
opcache.validate_timestamps=0
opcache.revalidate_freq=0
opcache.interned_strings_buffer=32
opcache.preload=/path/to/preload.php
opcache.preload_user=www-data

Nach Änderung der Einstellungen PHP-FPM neu starten. Überwachen Sie mit opcache_get_status() die Trefferquote und Speichernutzung.

JIT in PHP 8 verstehen

JIT (Just-In-Time)-Kompilierung geht einen Schritt weiter als OpCache: Sie kompiliert Bytecode zur Laufzeit in nativen Maschinencode. Dies kann CPU-intensive Aufgaben wie mathematische Berechnungen erheblich beschleunigen, bringt aber wenig für typische Webanfragen, die von I/O (Datenbank, Dateisystem, Netzwerk) dominiert werden.

JIT ist Teil von OpCache, daher müssen Sie zuerst OpCache aktivieren. In PHP 8 wird JIT über opcache.jit und opcache.jit_buffer_size konfiguriert.

JIT-Konfigurationsdirektiven

Empfohlene JIT-Einstellungen

opcache.jit=tracing
opcache.jit_buffer_size=128M

Hinweis: JIT funktioniert nur mit aktiviertem OpCache. In CLI müssen Sie möglicherweise opcache.enable_cli=1 setzen, um JIT zu testen.

OpCache vs. JIT: Wann Sie was verwenden sollten

FunktionOpCacheJIT
HauptvorteilCached kompilierten BytecodeKompiliert Bytecode in nativen Code
Am besten fürAlle PHP-AnwendungenCPU-intensive, langlebige Skripte
Auswirkung auf I/O-gebundene AnwendungenHoch (reduziert Parsen/Kompilieren)Gering bis keine
Speicher-OverheadMäßigZusätzlicher Puffer
KomplexitätNiedrigMittel

Schritt-für-Schritt-Tuning-Anleitung

  1. OpCache aktivieren mit den oben empfohlenen Einstellungen.
  2. OpCache überwachen mit opcache_get_status() oder Tools wie OpCache GUI. Streben Sie eine Trefferquote über 99 % an.
  3. Speicher anpassen, wenn opcache.memory_usage nahe am Limit ist.
  4. Preloading in Betracht ziehen für große Frameworks (Laravel, Symfony). Erstellen Sie ein Preload-Skript, das häufig verwendete Klassen einbindet.
  5. JIT aktivieren nur, wenn Ihre Anwendung CPU-gebunden ist. Testen Sie mit und ohne JIT, um die Auswirkung zu messen.
  6. Benchmarking mit Tools wie ab, wrk oder siege. Vergleichen Sie Anfragen pro Sekunde und Latenz.
  7. Änderungen schrittweise deployen und Fehlerprotokolle auf Probleme überwachen.

Häufige Fallstricke und Best Practices

FAQ

Verbessert JIT die Leistung für alle PHP-Anwendungen?

Nein. JIT profitiert bei CPU-intensiven Aufgaben wie komplexen Berechnungen oder Datenverarbeitung. Bei I/O-gebundenen Webanwendungen (Datenbankabfragen, API-Aufrufe) sind die Gewinne minimal. OpCache allein bietet oft die größte Beschleunigung.

Wie erkenne ich, ob OpCache funktioniert?

Prüfen Sie phpinfo() auf den OpCache-Status oder rufen Sie opcache_get_status() in einem Skript auf. Suchen Sie nach opcache_enabled => true und einer hohen hits-Anzahl im Verhältnis zu misses.

Kann ich JIT mit PHP 7 verwenden?

Nein. JIT wurde in PHP 8.0 eingeführt. PHP 7 unterstützt nur OpCache. Wenn Sie PHP 7 verwenden, konzentrieren Sie sich auf OpCache-Tuning und ziehen Sie ein Upgrade auf PHP 8 in Betracht, um JIT und andere Leistungsverbesserungen zu nutzen.

Bereit, die Leistung Ihres Servers zu analysieren? Sehen Sie sich unseren Nginx Log Analyzer an, um Einblicke aus Ihren Zugriffsprotokollen zu gewinnen und Engpässe zu identifizieren.