Zum Inhalt springen

AS213941 · Peering-20 % auf alle VPS mit dem Code NVH20 · Lieferung innerhalb von 60 Sekunden

Linux-VPSAb 2,49 € pro MonatWindows-VPSAb 3,49 € pro MonatFiveM-ServerAb 0,99 € pro MonatMinecraft-ServerAb 1,99 € pro Monat
VPS & Cloud

Sortimente

Linux-VPS mit NVMeRoot-Zugriff, Debian, Ubuntu, Alma…Windows-VPS mit RDPRemote-Desktop, inklusive LizenzDedizierte ServerIntel Xeon Gold, exklusive RessourcenVPS PterodactylVorinstallierte Spielesammlung

Netzwerk und Hosting

Anti-DDoSWebhostingWohnungswesenIP-TransitVPN

Fachleute

VPS für ResellerHändlerprogramm
Lösungen

Bots und Automatisierung

VPS-KI-AgentenEin Server für Ihre Code-Assistenten und autonomen AgentenVPS OllamaIhre private KI ohne GPU, Daten in FrankreichTelegram-Bot auf einem VPSPython oder Node.js – jederzeit erreichbarVPS-Bot für DiscordMusik, Moderation, Eintrittskarten: ohne UnterbrechungVPS-Bot für VintedDiscord-Überwachung und Benachrichtigungen rund um die UhrVPS n8nWorkflows ohne Begrenzung der AusführungsanzahlVPS VPNEin verschlüsselter Tunnel, der nach Frankreich führtWeb-Scraping auf einem VPSGeplante Datenerfassung, dedizierte IP-Adresse

Handel

VPS ForexIhre Roboter verwalten die Positionen während der NachtVPS MetaTrader 4Mehrere MT4-Terminals auf einem RechnerVPS MetaTrader 5Devisen, Indizes und Aktien in MT5NinjaTrader-VPSFutures und NinjaScript-StrategienVPS-Prop-FirmaChallenges und finanzierte Konten, Terminal stets onlineVPS Trading AfrikaMetaTrader in Paris, vom Maghreb oder aus Westafrika ausVPS RDPWindows-Remote-Desktop, stets aktivVPS-HandelsbotOpen-Source-Krypto-Bots, geschützte API-Schlüssel

Windows-Desktop

Windows 10-VPSFür Ihre Software, die Windows 10 erfordertWindows 11-VPSDer moderne Windows-Arbeitsplatz, von überall aus zugänglichVPS SEOGroße Websites crawlen, ohne Ihren PC zu überlastenVPS-StreamingEin OBS-Studio, das vom Rechenzentrum aus sendetWordPress-VPSSchnelle Websites auf NVMe-Festplatten
Marktplatz

Künstliche Intelligenz

OllamaLokale Sprachmodelle ohne externe APIOpen WebUIEine Chat-Oberfläche für Ihre Ollama-ModelleAnythingLLMPersönlicher KI-Assistent für Ihre Dokumente (PDFs, Websites, Notizen): Arbeitsbereiche, Suche …LangflowDer visuelle Editor „Langflow“ zum Erstellen von Agenten, RAG-Abläufen und KI-APIs, geschützt durch Ihre…FlowiseErstellen Sie Ihre Agenten und KI-Chatbots (LangChain, RAG, Tools) visuell mit Flowise, Ihrem…QdrantDie Vektordatenbank Qdrant für Ihre RAG- und semantischen Suchprojekte, API …

Handel

MetaTrader 5Offizielles MetaTrader 5-Terminal (MetaQuotes), im portablen Modus installiert, Verknüpfung auf dem…MetaTrader 4Offizielles MetaTrader 4-Terminal (MetaQuotes), im portablen Modus installiert, Verknüpfung auf dem…Forex-VPS-Paket (MT4 + MT5)MetaTrader 4 und MetaTrader 5 gemeinsam installiert, jeweils in einem eigenen portablen Ordner, auf einem VPS…NinjaTrader 8NinjaTrader 8-Plattform mit den entsprechenden Voraussetzungen (.NET 4.8, WebView2): installiert ab dem…FreqtradeOpen-Source-Krypto-Trading-Roboter mit der Benutzeroberfläche FreqUI, installiert im Modus…Interactive Brokers TWS / IB GatewayTrader Workstation oder IB Gateway (für die API und die Handelsroboter) von Interactive Brokers…

Bots und Agenten

Claude CodeDer Code-Agent von Anthropic in Ihrem TerminalCodex CLIDas OpenAI-Befehlszeilen-ToolTelegram-BotHosten Sie Ihren Telegram-Bot (Python, Node.js oder Bun): Ihren Code aus Git oder einer…Discord-BotHosten Sie Ihren Discord-Bot (discord.py, discord.js, Bun…): Ihren Code aus Git oder einer…OpenClawOpenClaw, der rund um die Uhr verfügbare Open-Source-KI-Assistent: Chatten Sie mit ihm auf…Hermes-AgentAutonomer Open-Source-KI-Agent von Nous Research mit Gedächtnis und Fähigkeiten, die…

Bereitstellung und Automatisierung

DockerDie Container-Engine und Docker Composen8nIhre Automatisierungen – ohne Begrenzung der AusführungsanzahlPortainerVerwalten Sie Ihre Docker-Container über den BrowserCoolifyStellen Sie Ihre Anwendungen über Git auf Ihrem Server bereitUptime KumaÜberwachen Sie Ihre Websites und Server, einschließlich Benachrichtigungen

Websites und Datenbanken

WordPressDas am häufigsten verwendete CMS auf einer schnellen Nginx-PlattformApache + PHP + MySQLWebserver, der für das Hosting Ihrer Websites bereit ist: Apache2, PHP und die gängigen PHP-Erweiterungen, MariaDB…MySQL (MariaDB)MySQL-kompatibler MariaDB-Datenbankserver mit Ihrer Datenbank und Ihrem…PleskDas Plesk Obsidian-Hosting-Panel wurde mit den empfohlenen Komponenten installiert: Websites…NextcloudIhre Cloud für Dateien, Kalender und Kontakte

Netzwerk und Sicherheit

WireGuardIhr verschlüsseltes VPN – kostenlos vorinstalliertVaultwardenEin selbst gehosteter Passwortmanager

Spielserver

FiveMFiveM-Server (FXServer + txAdmin), MariaDB und phpMyAdmin sind installiert und konfiguriert, unter…MinecraftSchlüsselfertiger Minecraft-Server für die Java Edition: Paper, Purpur, Fabric, NeoForge, Forge oder…RustRust-Server (Facepunch) mit LinuxGSM: automatische Updates, Neustart nach…Counter-Strike 2Dedizierter Counter-Strike-2-Server mit LinuxGSM (ca. 60 GB zum Herunterladen), GSLT-Token…PalworldPalworld-Dedizierter Server mit LinuxGSM: Name, Passwort, Anzahl der Spieler und Passwort für…ValheimDedizierter Valheim-Server mit LinuxGSM, passwortgeschützt (vom Spiel vorgeschrieben)…
Gaming

Spielserver

FiveM-ServertxAdmin, ESX, QBCoreMinecraft-ServerJava, Bedrock, ModpacksRust-ServerOxid, Kohlenstoff, ReinigungstücherNova-Life-ServerRP Nova-Life: Amboise

Schutz und Hilfsmittel

FiveM-Anti-DDoSKostenlose Tools
Ressourcen

Lernen

DokumentationBlog

Kundendienst

KontaktSLA-Verpflichtung
Angebote anzeigen Kundenbereich Peering · AS213941

Installation

Optimierung von PHP-FPM, OPcache und dem Nginx-Cache auf einem VPS

Vom NVHCloud-Team, 18.09.2026, Lesezeit: 5 Min.

Bei einer PHP-Website hängt die Antwortzeit des Servers von drei Faktoren ab: Kompiliert PHP die Skripte bei jeder Anfrage? Sind genügend PHP-Prozesse für gleichzeitige Besucher vorhanden? Und vor allem: Muss PHP für jede Seite ausgeführt werden? Dieser Leitfaden behandelt alle drei Punkte in dieser Reihenfolge. Die Beispiele beziehen sich auf WordPress unter Ubuntu 24.04 mit PHP 8.3, gelten jedoch auch für Laravel oder jede andere PHP-Anwendung.

1. Erst messen, dann einstellen

Ohne eine Ausgangsmessung lässt sich nicht feststellen, ob eine Anpassung etwas bewirkt hat. Erfassen Sie die Ladezeit einer repräsentativen Seite dreimal hintereinander:

for i in 1 2 3; do
  curl -o /dev/null -s -w "TTFB %{time_starttransfer}s\n" https://monsite.fr/
done

Ab 800 ms stuft Google die Antwortzeit als schlecht ein. Beachten Sie diesen Wert auch bei einer Seite, die nicht zwischengespeichert werden kann, wie beispielsweise der Warenkorb eines Online-Shops: Genau diesen Wert werden PHP-FPM und Redis verbessern. Zur Interpretation dieser Werte siehe WordPress läuft langsam: Die eigentliche Ursache finden.

2. OPcache aktivieren und dimensionieren

OPcache speichert bereits kompilierten PHP-Code im Arbeitsspeicher. Es wird zusammen mit PHP installiert, doch die Standardwerte sind für WordPress und dessen Erweiterungen zu niedrig. Erstellen Sie eine Übersteuerungsdatei:

cat > /etc/php/8.3/fpm/conf.d/99-opcache.ini <<'EOF'
opcache.enable=1
opcache.memory_consumption=256
opcache.interned_strings_buffer=16
opcache.max_accelerated_files=20000
opcache.validate_timestamps=1
opcache.revalidate_freq=60
EOF
systemctl restart php8.3-fpm

Mit revalidate_freq=60, PHP überprüft höchstens einmal pro Minute, ob sich eine Datei geändert hat: Dies ist ein guter Kompromiss für ein WordPress, das über den Admin-Bereich aktualisiert wurde.

⚠️ Sie werden häufig den Ratschlag hören, opcache.validate_timestamps=0. Das geht zwar schneller, aber PHP erkennt keine Dateiänderungen mehr, solange Sie PHP-FPM nicht neu starten. Dies ist nur für Anwendungen vorgesehen, die über ein Skript bereitgestellt werden, das systemctl reload php8.3-fpm bei jeder Produktionsfreigabe. Bei WordPress würde ein Plugin-Update nicht berücksichtigt werden.

3. Dimensionierung von PHP-FPM

Jede PHP-Anfrage belegt einen Prozess. Sind alle Prozesse belegt, müssen nachfolgende Besucher warten. Die entscheidende Einstellung lautet pm.max_children, die maximale Anzahl an Prozessen. Ist dieser Wert zu niedrig, kommt es zu Warteschlangen auf der Website; ist er zu hoch, geht dem Server der Speicher aus und er wird sehr langsam.

Messen Sie zunächst den durchschnittlichen Speicherverbrauch eines Prozesses auf einer laufenden Website:

ps --no-headers -o rss -C php-fpm8.3 | awk '{s+=$1; n++} END {printf "%.0f Mo en moyenne\n", s/n/1024}'

Berechnen Sie anschließend: Für PHP reservierter Speicher ÷ Speicher pro Prozess. Beispiel für einen VPS mit 4 GB: Wir reservieren etwa 1,5 GB für das System, Nginx und MariaDB, sodass 2,5 GB für PHP verbleiben. Bei 60 MB pro Prozess ergibt dies etwa vierzig; wir nehmen 35, um einen Spielraum zu lassen.

Stellen Sie den Pool in /etc/php/8.3/fpm/pool.d/www.conf :

pm = dynamic
pm.max_children = 35
pm.start_servers = 6
pm.min_spare_servers = 4
pm.max_spare_servers = 10
pm.max_requests = 500

pm.max_requests jeden Prozess nach 500 Anfragen neu startet, wodurch kleine Speicherlecks bestimmter Erweiterungen ausgeglichen werden. Auf einem VPS mit 2 GB, der nur wenig Datenverkehr verzeichnet, pm = ondemand gibt Speicherplatz frei, wenn auf der Website wenig los ist.

Um festzustellen, ob das Limit erreicht ist, achten Sie bitte auf folgenden Eintrag im Protokoll:

grep "max_children" /var/log/php8.3-fpm.log

Sollte dieser Wert regelmäßig angezeigt werden, erhöhen Sie ihn, sofern der Speicherplatz dies zulässt; andernfalls wechseln Sie zu einem höheren Tarif.

4. Den FastCGI-Seiten-Cache einrichten

Diese Einstellung hat die größte Wirkung: Nginx speichert eine Kopie des generierten HTML-Codes und liefert diese direkt aus, ohne PHP zu starten oder die Datenbank abzufragen. Eine zwischengespeicherte Seite wird innerhalb weniger Millisekunden bereitgestellt.

Deklarieren Sie den Cache-Bereich in /etc/nginx/conf.d/fastcgi-cache.conf :

fastcgi_cache_path /var/cache/nginx/fastcgi levels=1:2 keys_zone=WP:100m inactive=60m max_size=1g;
fastcgi_cache_key "$scheme$request_method$host$request_uri";
fastcgi_cache_use_stale error timeout updating http_500 http_503;

Anschließend im Block server Legen Sie für die Website fest, was niemals zwischengespeichert werden darf:

set $skip_cache 0;
if ($request_method = POST)       { set $skip_cache 1; }
if ($query_string != "")          { set $skip_cache 1; }
if ($request_uri ~* "/wp-admin/|/wp-json/|/xmlrpc.php|wp-.*\.php|/feed/|sitemap") { set $skip_cache 1; }
if ($request_uri ~* "/panier/|/commande/|/mon-compte/|/cart/|/checkout/|/my-account/") { set $skip_cache 1; }
if ($http_cookie ~* "comment_author|wordpress_logged_in|wp-postpass|woocommerce_items_in_cart|woocommerce_cart_hash") { set $skip_cache 1; }

Und im Block location ~ \.php$ :

fastcgi_cache WP;
fastcgi_cache_valid 200 301 302 60m;
fastcgi_cache_bypass $skip_cache;
fastcgi_no_cache $skip_cache;
add_header X-Cache $upstream_cache_status;
mkdir -p /var/cache/nginx/fastcgi
nginx -t && systemctl reload nginx
⚠️ Die Cookie-Regeln sind unverzichtbar. Ohne sie könnte die Seite eines angemeldeten Benutzers oder der Warenkorb eines Kunden aus dem Cache an einen anderen Besucher ausgeliefert werden. Passen Sie die Pfade für den Warenkorb und das Konto an die Ihres Shops an.

5. Den Cache nach einer Änderung leeren

Nginx erkennt nicht, dass ein Artikel geändert wurde: Ohne eine Bereinigung wird die alte Version weiterhin ausgeliefert, bis die Gültigkeitsdauer abläuft – in diesem Fall 60 Minuten. Es gibt zwei Lösungen:

  • Einfach : Die Dauer kurz halten und nach einer wesentlichen Änderung manuell leeren mit rm -rf /var/cache/nginx/fastcgi/*.
  • Automatisch : das Entlüftungsmodul einbauen (apt install libnginx-mod-http-cache-purge) sowie das WordPress-Plugin Nginx Helper, das die betreffende Seite bei jeder Veröffentlichung aktualisiert.

6. Einen Redis-Objekt-Cache hinzufügen

Der Seiten-Cache ist bei dynamischen Seiten – wie dem Warenkorb, dem Kundenkonto und dem Administrationsbereich – nutzlos. Bei diesen Seiten verhindert ein Objekt-Cache, dass dieselben SQL-Abfragen von Seite zu Seite wiederholt werden müssen.

apt install -y redis-server php8.3-redis
systemctl enable --now redis-server
systemctl restart php8.3-fpm

Installieren Sie anschließend das WordPress-Plugin Redis Object Cache und aktivieren Sie es unter Einstellungen → Redis. Standardmäßig hört Redis nur auf der lokalen Adresse: Geben Sie diese niemals im Internet frei.

7. Komprimierung aktivieren

Die gzip-Komprimierung ist in der Nginx-Konfiguration von Ubuntu bereits aktiviert, jedoch nur für HTML. Ergänzen Sie den Abschnitt http von /etc/nginx/nginx.conf :

gzip on;
gzip_vary on;
gzip_comp_level 5;
gzip_min_length 256;
gzip_types text/css text/plain text/xml application/javascript application/json
           application/xml application/rss+xml image/svg+xml font/ttf;

Sie brauchen keine JPEG-, PNG- oder WebP-Bilder hinzuzufügen: Diese sind bereits komprimiert.

8. Das Ergebnis überprüfen

Rufen Sie dieselbe Seite zweimal auf und beachten Sie den oben hinzugefügten Header:

curl -sI https://monsite.fr/ | grep -i x-cache
curl -sI https://monsite.fr/ | grep -i x-cache

Die erste Antwort besagt MISS, die zweite HIT. Führen Sie anschließend die Messung aus Schritt 1 erneut durch: Bei einer im Cache gespeicherten Seite sollte die Antwortzeit von Frankreich aus unter 100 ms liegen. Bei dynamischen Seiten machen OPcache, PHP-FPM und Redis den Unterschied aus.

💡 Sollte die Antwortzeit trotz alledem weiterhin hoch sein, verfügt der Server wahrscheinlich nicht über ausreichende Ressourcen. Siehe Welche VPS-Konfiguration eignet sich für WordPress? oder unsere NVMe-VPS.

Häufig gestellte Fragen

Ist eine Cache-Erweiterung erforderlich, wenn ich den FastCGI-Cache von Nginx verwende?

Nein, nicht für das Seiten-Caching: Nginx erledigt dies effizienter als eine Erweiterung, da PHP gar nicht erst gestartet wird. Eine Erweiterung ist jedoch weiterhin nützlich für die automatische Leerkennung, wie beispielsweise Nginx Helper, oder zur Optimierung von CSS- und JavaScript-Dateien. Vermeiden Sie es, zwei Seiten-Caches zu kombinieren, da dies zu unvorhersehbaren Ergebnissen führen kann.

Welchen Wert sollte man für „pm.max_children“ festlegen?

Teilen Sie den für PHP reservierten Speicher durch den durchschnittlichen Speicherbedarf eines Prozesses, der auf Ihrer Website gemessen wurde. Bei einem VPS mit 4 GB und Prozessen von etwa 60 MB ist ein Wert um 35 angemessen. Es gibt keinen allgemeingültigen Wert: Dieser hängt von Ihren Erweiterungen ab.

Funktioniert der Nginx-Cache mit WooCommerce?

Ja, vorausgesetzt, Sie schließen den Warenkorb, die Bestellung, das Kundenkonto und Besucher mit einem offenen Warenkorb aus, wie es die Regeln in diesem Leitfaden vorsehen. Die Produkt- und Kategorieseiten bleiben für anonyme Besucher im Cache gespeichert, was den Server erheblich entlastet.

Ist Redis für eine kleine Präsentationswebsite sinnvoll?

Selten. Wenn fast alle Ihre Seiten aus dem Nginx-Cache bereitgestellt werden, bringt Redis so gut wie keinen Nutzen. Es wird erst dann sinnvoll, sobald ein erheblicher Teil des Datenverkehrs dynamisch ist: Online-Shop, Mitgliederbereich, Forum.

WordPress-VPS

Ihre Websites auf NVMe, ohne Einschränkungen, inklusive Anti-DDoS.