Tutorial: PHP-Performance in Plesk optimieren – FPM, OPcache und Caching richtig einstellen

Langsame Websites liegen selten am Server selbst – meist an suboptimalen PHP-Einstellungen. Dieses Tutorial zeigt, wie man PHP in Plesk auf Performance trimmt.

1. Der richtige PHP-Handler: FPM statt CGI

Unter Websites & Domains → Domain → PHP-Einstellungen:

  • Als Handler FPM-Anwendung, von nginx bereitgestellt wählen (schnellste Variante)
  • Falls Apache-Features wie .htaccess zwingend nötig sind: FPM-Anwendung, von Apache bereitgestellt
  • CGI/FastCGI nur noch für Alt-Anwendungen verwenden

Aktuelle PHP-Version nutzen! Unter Tools & Einstellungen → PHP-Einstellungen lassen sich mehrere Versionen parallel installieren – neue Projekte immer auf der aktuellsten stabilen Version starten.

2. FPM-Prozessmanagement anpassen

In den PHP-Einstellungen der Domain (Bereich FPM) bzw. in den zusätzlichen Direktiven:

pm = ondemand          ; für kleine/mittlere Sites – Prozesse nur bei Bedarf
pm.max_children = 20   ; Obergrenze je nach RAM (Faustregel: RAM-Reserve / ~60 MB pro Prozess)
pm.process_idle_timeout = 10s

Für stark frequentierte Sites ist pm = dynamic mit passenden pm.start_servers/pm.min_spare_servers oft besser. Bei „502 Bad Gateway" unter Last zuerst pm.max_children prüfen (Meldung „server reached max_children" im FPM-Log).

3. OPcache aktivieren und dimensionieren

OPcache hält kompilierte PHP-Skripte im RAM – oft der größte einzelne Performance-Hebel. In den PHP-Einstellungen der Domain unter „Zusätzliche Konfigurationsanweisungen":

opcache.enable=1
opcache.memory_consumption=192
opcache.max_accelerated_files=20000
opcache.validate_timestamps=1
opcache.revalidate_freq=60

Auf reinen Produktionssystemen ohne häufige Deployments kann opcache.revalidate_freq höher gesetzt werden.

4. Sinnvolle Limits statt Maximalwerte

memory_limit = 256M        ; für WordPress/Shops meist ausreichend
max_execution_time = 60
upload_max_filesize = 64M
post_max_size = 64M

memory_limit = -1 oder 1024M „auf Verdacht" verschenkt RAM, den FPM-Prozesse blockieren können.

5. nginx-Caching davorschalten

  • Websites & Domains → Domain → Apache & nginx (bzw. Hosting-Einstellungen): Statische Dateien direkt von nginx ausliefern aktivieren (smart static files processing)
  • Browser-Caching für statische Assets aktivieren
  • Für WordPress & Co.: nginx-Caching in Plesk aktivieren (FastCGI-Cache) – bei dynamischen Seiten mit Login-Bereichen die Ausnahmen sauber konfigurieren

6. Messen statt raten

  • Advanced Monitoring in Plesk: CPU-, RAM- und PHP-FPM-Auslastung beobachten
  • php -v bzw. phpinfo() der Domain: Ist OPcache wirklich aktiv?
  • Lasttest z. B. mit ab oder wrk vor/nach der Änderung – nur eine Stellschraube auf einmal drehen

Kurz-Checkliste

  1. Aktuelle PHP-Version + FPM via nginx :white_check_mark:
  2. OPcache aktiv und groß genug :white_check_mark:
  3. FPM-Prozesslimits zum RAM passend :white_check_mark:
  4. Statische Dateien über nginx :white_check_mark:
  5. Vorher/Nachher gemessen :white_check_mark:

Welche Werte fahrt ihr bei pm.max_children & Co.? Erfahrungswerte gern hier in den Thread.