PHP

PHP-Worker

PHP-Worker verarbeiten den PHP-Code einer Website. Dazu gehören der Aufbau von Seiten, die Bearbeitung von Hintergrundaufgaben, die Abfrage der Datenbank usw.

Man kann sich die PHP-Worker wie Angestellte in einem Laden vorstellen. Jeder Worker kann nur eine Anfrage auf einmal bearbeiten. Wenn es mehr Kunden als Arbeiter gibt, müssen sich diese Kunden (Prozesse) anstellen und auf den nächsten Arbeiter warten, der ihre Anfrage bearbeiten kann.

PHP-Worker kommen vor allem dann ins Spiel, wenn eine Website die meisten Inhalte nicht zwischenspeichern muss oder kann. Je dynamischer eine Website ist, desto mehr PHP-Worker braucht sie wahrscheinlich. Für gecachte Inhalte werden keine PHP-Worker benötigt. Sie werden nur dann gebraucht, wenn die Website die Datenbank abfragen muss, um Informationen zu erhalten oder zu ändern.

Wenn es um die Leistung von WordPress geht, bedeuten mehr PHP-Worker nicht automatisch eine bessere Leistung; es gibt eine Reihe von Faktoren, die du berücksichtigen musst:

  • Caching: Effektives Caching kann die Arbeitsbelastung der PHP-Worker verringern, indem Inhalte im Cache bereitgestellt werden, anstatt sie bei jeder Anfrage dynamisch zu generieren. Das kann die Leistung erheblich verbessern, vor allem bei häufig genutzten Ressourcen.
  • Hardware: Die verfügbaren Hardware-Ressourcen auf dem Server, wie CPU, Arbeitsspeicher (RAM) und Festplattengeschwindigkeit, wirken sich direkt auf die Leistung der PHP-Worker aus. Unzureichende Ressourcen können zu langsameren Verarbeitungszeiten und Leistungseinbußen führen.
  • Webserver Setup: Die Konfiguration des Webservers und seine Interaktion mit PHP können die Leistung der Worker beeinflussen.
  • Datenbankgeschwindigkeit: PHP-Anwendungen rufen häufig Daten aus MySQL-Datenbanken ab, um dynamische Inhalte darzustellen. Die Geschwindigkeit, mit der die Daten abgerufen werden, hängt unter anderem davon ab, wie die Datenbank organisiert ist, wie die Abfragen optimiert sind und wie gut der Datenbankserver arbeitet. Dies wirkt sich direkt darauf aus, wie gut PHP-Anwendungen laufen.
  • PHP Version: Neuere PHP-Versionen führen oft zu einer besseren Leistung von PHP Workern aufgrund von Leistungsverbesserungen, Fehlerbehebungen und Sicherheitsupdates.

Bei Kinsta wissen wir, wie wichtig die Leistung deiner Seite ist. Deshalb haben wir verschiedene Technologien implementiert, um die PHP-Leistung zu maximieren und die PHP-Anfragen zu minimieren:

  • Wir bieten Seiten-Caching sowohl auf CDN– als auch auf Server-Ebene, mit anpassbaren Regeln, um maximale Cache-Effizienz zu gewährleisten.
  • Wir verwenden Premium-Server der GCP (C2- und C3D-Virtual Machines), die mit den schnellsten CPUs der Google Cloud ausgestattet sind, damit die PHP-Worker deiner Seite effizienter arbeiten können.
  • Unsere skalierbare Infrastruktur stellt sicher, dass die PHP-Worker deiner WordPress-Seite über genügend CPU-Ressourcen verfügen, um mit maximaler Leistung zu arbeiten.
  • Wir nutzen eine erstklassige Netzwerkinfrastruktur bei Google Cloud Platform (GCP), um die Latenzzeit zu minimieren. Durch die Nutzung des Premium-Netzwerks von GCP können wir die Zeit, die die Daten zwischen den verschiedenen Komponenten unserer Infrastruktur, einschließlich des MySQL-Servers und der Webserver, benötigen, erheblich reduzieren.
  • Wir bieten einen hochoptimierten MySQL-Server, der lokal gehostet wird, um die Netzwerklatenz zu verringern und die Datenabfrage und -verarbeitung zu beschleunigen.
  • Auf dem MySQL-Server gibt es InnoDB-Puffer, die die Leistung der Datenbank verbessern, indem sie E/A-Vorgänge auf der Festplatte reduzieren. Der Zugriff auf die Daten erfolgt schneller aus dem Speicher statt von der Festplatte, was die Effizienz von Lese- und Schreibvorgängen erhöht und zu einer besseren Gesamtleistung der MySQL-Datenbank führt.
  • Wir stellen sicher, dass immer die neueste Version von PHP zur Verfügung steht, um Leistungsverbesserungen einzubauen.

WordPress und PHP-Worker

Eine nicht zwischengespeicherte Anfrage auf einer WordPress-Website läuft in der Regel wie folgt ab:

  1. Ein Besucher besucht eine Seite oder führt eine Aktion auf einer Seite durch (z. B. etwas in den Warenkorb legen, ein Formular ausfüllen usw.).
  2. Der Webserver (Nginx hier bei Kinsta) empfängt diese Anfrage.
  3. Nginx leitet die Anfrage an PHP weiter.
  4. PHP fragt die MySQL-Datenbank ab und holt sich die benötigten Informationen oder nimmt die erforderlichen Aktualisierungen vor.
  5. PHP verwendet dann die PHP-Dateien deines Themes (und ggf. die Plugin-Dateien), um eine HTML-Seite zu erstellen.
  6. PHP übergibt die gerenderte HTML-Seite zurück an den Webserver.
  7. Die Seite wird an den Besucher ausgeliefert.

In dem oben beschriebenen Prozess ist Schritt 4 der zeit- und ressourcenintensivste (CPU und RAM). Eine gut optimierte Website mit effizientem PHP-Code und Datenbankabfragen wird diesen Schritt relativ schnell abwickeln.

Schlecht geschriebener oder nicht optimierter PHP-Code und/oder eine Menge ineffizienter Datenbankabfragen brauchen dagegen viel länger, um Schritt 4 zu bewältigen. Anfragen, deren Bearbeitung länger dauert, beanspruchen die PHP-Worker für längere Zeit.

Schätzung der Anzahl der benötigten PHP-Worker

Wie viele Worker eine Website benötigt, hängt von verschiedenen Faktoren ab, z. B. davon, wie dynamisch die Website ist, wie optimiert der Code der Website ist (wie schnell die Anfragen bearbeitet werden können) und welche Art von Traffic die Website erhält. Eine optimierte Website bearbeitet die Anfragen schnell und gibt die PHP-Worker für die nächste Anfrage in der Warteschlange frei.

Dynamische Websites wie E-Commerce-Shops, Foren, Lernseiten und Mitgliederseiten benötigen in der Regel mehr PHP-Worker als statische, broschürenartige Websites. Je höher die Auslastung einer Website ist, desto mehr PHP-Worker braucht sie in der Regel auch.

Kinsta Pläne und PHP Worker

Die folgende Tabelle zeigt, wie viele PHP-Worker in jedem Plan bei Kinsta enthalten sind:

PlanPHP Worker
Starter2 PHP Worker
Pro2 PHP Worker/site
Business 14 PHP Worker/site
Business 24 PHP Worker/site
Business 36 PHP Worker/site
Business 46 PHP Worker/site
EnterpriseStarting from 8 PHP workers/site
Einzelseiten-Plan6 PHP Worker
Agentur-Plan6 PHP Worker/site

Wir bieten auch individuelle Pläne an, bei denen du angeben kannst, wie viele PHP-Worker du benötigst. Weitere Informationen erhältst du von unserem Vertriebsteam.

PHP-Worker, CPU und RAM

Wenn du PHP-Worker hinzufügst, musst du auch die CPU- und RAM-Ressourcen berücksichtigen. Wenn du die Anzahl der PHP-Worker erhöhst, der Server aber mehr CPU und RAM für den Support dieser Worker benötigt, führt dies zu einem Engpass, da die Anfragen nicht effizient bearbeitet werden können.

Bei Kinsta sind unsere maßgeschneiderten LXD-Container mit ausreichend CPU- und RAM-Ressourcen ausgestattet. Durch den Einsatz von rechenoptimierten virtuellen C2- und C3D-Maschinen, die mit den schnellsten CPUs von Google Cloud ausgestattet sind, sorgen wir außerdem dafür, dass die PHP-Worker deiner Website effizienter arbeiten. Unsere skalierbare Infrastruktur stellt sicher, dass die PHP-Worker deiner WordPress-Website über genügend CPU-Ressourcen verfügen, um mit Höchstleistung zu arbeiten.

Identifizierung von Leistungsproblemen bei PHP-Workern

Wenn sich zu viele Anfragen in der Warteschlange stapeln, sei es aufgrund eines großen Zustroms von Anfragen, lang laufender Prozesse oder einer Kombination aus beidem, kann es zu Leistungsproblemen kommen, die zu 502 oder 504 Fehlern führen können.

Tools wie das APM-Tool von Kinsta und das Plugin Query Monitor können dir helfen, Leistungsprobleme und langsame Abfragen zu erkennen. Wir empfehlen außerdem, mit einem qualifizierten Leistungsexperten zusammenzuarbeiten, um Probleme zu diagnostizieren.

Klicke auf die Schaltfläche APM aktivieren, um es in MyKinsta zu aktivieren
Klicke auf die Schaltfläche APM aktivieren, um es in MyKinsta zu aktivieren

PHP Worker Limit

Du kannst die Tabelle mit dem PHP-Worker-Limit unter MyKinsta > WordPress-Seiten > Seitenname > Analytics > Performance > PHP-Worker-Limit aufrufen. Wenn ein PHP-Worker 10 Sekunden lang ununterbrochen nichts zu tun hat, wird der PHP-Worker-Prozess automatisch beendet. Sobald er wieder benötigt wird, wird der Worker-Prozess sofort neu erstellt. Diese Grafik zeigt dir, wie oft die maximale Anzahl der zugewiesenen Worker auf deiner Seite erreicht wurde.

Wenn du zum Beispiel einen Business 1 Plan hast, sind maximal 4 PHP-Worker-Prozesse erlaubt. Wenn 3 PHP-Worker im Einsatz sind und eine weitere Anfrage auf deiner Seite gestellt wird, die einen PHP-Worker benötigt, wird beim Erstellen des PHP-Workers die maximale Anzahl von 4 PHP-Workern erreicht und als Vorfall protokolliert, bei dem das PHP-Worker-Limit erreicht wurde.

Dies gibt dir nur einen Teil der PHP-Worker-Aktivität wieder, da nur aufgezeichnet wird, wie oft das PHP-Worker-Limit erreicht wurde und nicht, wie lange alle PHP-Worker im Einsatz waren.

Wenn deine Seite beispielsweise einen starken Anstieg des Traffics erlebt, kann es sein, dass alle PHP-Worker eine ganze Stunde lang durchgehend beschäftigt sind und in dieser Stunde nicht beendet werden. In diesem Fall wird das PHP-Worker-Limit nur in einem Fall erreicht und es sieht so aus, als wären die PHP-Worker in dieser Stunde nicht ausgelastet gewesen, obwohl sie in Wirklichkeit die ganze Zeit aktiv waren. Wenn der Traffic nach 30 Minuten nachlässt und ein PHP-Worker 10 Sekunden lang untätig war, wird er automatisch beendet. Wenn der PHP-Worker jedoch in einer weiteren Minute wieder gebraucht wird, wird die maximale Anzahl der PHP-Worker erneut erreicht, was dazu führt, dass ein weiteres PHP-Worker-Limit protokolliert wird.

Wenn du die Leistung deiner Website untersuchst und feststellen willst, ob deine Seite ihre PHP-Worker ständig auslastet, kannst du die PHP-Worker-Aktivität mit Hilfe von Tools in einer SSH-Sitzung überwachen. Der folgende benutzerdefinierte Befehl überwacht zum Beispiel alle 0,3 Sekunden die Anzahl der aktiven PHP-Worker:

watch -n 0.3 “ps aux | awk ‘\$(NF-2) ~ /php-fpm/ && \$(NF-1) ~ /pool/ && \$8 ~ /R/ { print \$0 }’ | wc -l"

Um diesen Befehl zu beenden, drücke CMD + C oder STRG + C und lass dann beide Tasten los.

PHP-Worker-Limit
PHP-Worker-Limit

Cache-Analyse

In der Cache-Analyse von MyKinsta kannst du die Gesamtzahl der Cache-Anfragen und die wichtigsten Cache-Umgehungen deiner Website einsehen.

Cache - Cache-Komponenten-Diagramm
Cache – Cache-Komponenten-Diagramm
Cache - Top Cache-Umgehungen
Cache – Top Cache-Umgehungen

Reduzieren und Optimieren der PHP Worker-Nutzung

Caching

Caching ist dein bester Freund, wenn es darum geht, deine Website zu optimieren und die Anzahl der benötigten PHP-Worker zu reduzieren. Denke daran, dass PHP-Worker nicht für gecachte Inhalte benötigt werden, also cache alles, was du kannst.

Seiten-Caching

Bei Kinsta kümmern wir uns um das Caching von Seiten; alle Websites nutzen das FastCGI-Cache-Modul von Nginx für eine superschnelle Leistung.

Objekt-Caching

Wenn du deiner Datenbank einen persistenten Objekt-Cache wie Redis vorschaltest, kannst du die Leistung steigern und den Bedarf an PHP-Workern verringern. Ohne Objekt-Caching werden MySQL-Datenbankabfragen bei jeder Anfrage ausgeführt, auch wenn es sich um dieselbe Anfrage und dieselben Ergebnisse handelt.

Redis speichert die Ergebnisse von Datenbankabfragen im Arbeitsspeicher, sodass PHP diese Ergebnisse abrufen kann, ohne die Abfrage erneut ausführen zu müssen. Durch den Wegfall der sich wiederholenden Datenbankabfragen können PHP-Worker Ressourcen sparen und Anfragen effizienter bearbeiten.

In unseren Premium-Add-ons erfährst du mehr über das Hinzufügen von Redis-Cache zu deiner Website.

Code-Optimierung

Sorge dafür, dass der Code deiner Website so effizient wie möglich ist. Das gilt für benutzerdefinierten Code, Theme-Code und Plugin-Code. Wenn du dir nicht sicher bist, empfehlen wir dir, einen Entwickler zu bitten, den Code deiner Website zu überprüfen.

Benutzerdefinierter Code

Wenn deine Website benutzerdefinierte Codeschnipsel in Plugins oder deinem Theme enthält, vergewissere dich, dass sie wirklich notwendig und gut geschrieben sind.

Plugins

Sieh dir die auf deiner Website verwendeten Plugins genau an und vergewissere dich, dass sie wirklich benötigt werden, keine Funktionen duplizieren und die beste Option für die jeweilige Aufgabe darstellen. Wenn ein Plugin nicht mit der neuesten Version von WordPress und PHP kompatibel ist, ist es vielleicht an der Zeit, andere Optionen in Betracht zu ziehen. Wenn du Plugins auf deiner Website hast, die nicht genutzt werden, solltest du diese entfernen.

Theme

Verwende ein schlankes und leistungsstarkes Theme. Vermeide Themes, die Funktionen enthalten, die am besten über separate Plugins implementiert werden (z. B. SEO, Suchfilter, benutzerdefinierte Felder, Bildslider/Diashows usw.) oder die für deine Website nicht benötigt werden.

PHP aktualisieren

Verwende die neueste PHP-Version, um die Leistung zu steigern. PHP-Benchmarks zeigen, dass jede PHP-Version schneller ist als die vorherige.

Aktiviere das CDN von Kinsta

Wenn du das CDN von Kinsta aktivierst, wird deine Website noch effizienter und optimaler. Das Kinsta CDN ist unser leistungsstarkes HTTP/3 CDN, das von Cloudflare betrieben wird und dir ohne zusätzliche Kosten zur Verfügung gestellt wird. Wenn du es aktivierst, kann deine Website statische Inhalte aus der ganzen Welt bereitstellen.

Konsultiere einen Leistungsexperten

Wenn du mit der Optimierung deiner Website vertraut bist, ist dieser Schritt optional. Ein Experte kann dir helfen, alle Aspekte deiner Website zu analysieren, Engpässe zu erkennen und Lösungen zu implementieren.

PHP neu starten

Bei Kinsta haben wir eine großartige Funktion, die wir PHP-Selbstheilung nennen. Diese Funktion ist sehr nützlich, wenn du einen 502-Fehler bekommst oder etwas anderes schief läuft. Wenn PHP aus irgendeinem Grund ausfällt, versucht unser System automatisch, es wieder zu starten. In vielen Fällen ist das alles, was du brauchst, und du bist startklar!

In seltenen Fällen kann es sich um ein größeres Problem handeln. Unser System protokolliert dies automatisch, damit unser Systemadministrationsteam (sysadmin) es überprüfen kann. Ansonsten kannst du PHP für jede deiner Websites mit einem einfachen Klick auf eine Schaltfläche in MyKinsta neu starten.

Manueller Neustart von PHP

Um PHP auf deiner WordPress-Website neu zu starten, befolge die folgenden Schritte.

  1. Logge dich bei MyKinsta ein.
  2. Gehe zu WordPress Websites und wähle die Website aus, auf der du PHP neu starten möchtest.
  3. Gehe auf die Registerkarte Extras und suche den Abschnitt PHP neu starten.
  4. Klicke auf die Schaltfläche PHP neu starten.
Starte PHP in MyKinsta neu
Starte PHP in MyKinsta neu

Bitte beachte, dass der Neustart von PHP etwa 5-10 Sekunden dauern wird. Du erhältst eine Benachrichtigung am unteren Rand des Bildschirms, wenn der Vorgang abgeschlossen ist.

Hinweis: Du musst auch den Cache deiner Website löschen, damit die Änderungen sichtbar werden.

Kinstas PHP-Grenzen

Als Managed WordPress-Service haben wir die optimalen PHP-Einstellungen für WordPress-Seiten konfiguriert. Wenn du spezielle PHP-Anforderungen hast, kannst du dich gerne an unser Support-Team wenden, um deine Bedürfnisse zu besprechen.

Kinsta bietet PHP 8.0, 8.1, 8.2 and 8.3 an. Dies sind die Standardeinstellungen für PHP:

  • memory_limit = 256M
  • post_max_size = 128M
  • upload_max_filesize = 128M
  • max_input_vars = 10000
  • max_execution_time = 300

Abhängig von deinem WordPress-Tarif kannst du diese Werte bei Bedarf erhöhen. Bitte wende dich an unser Support-Team, um herauszufinden, welche Optionen dir zur Verfügung stehen.

Das PHP-Speicherlimit von Kinsta

Das standardmäßige PHP-Speicherlimit von Kinsta liegt bei 256 MB, was für die meisten WordPress-Plugins und Websites mehr als ausreichend ist. Dieses Limit soll verhindern, dass PHP-Skripte zu viel Speicher verbrauchen. Wenn du das Limit zu hoch ansetzt, kann ein falsch konfiguriertes oder fehlerhaftes Skript ernsthafte Probleme verursachen, weil es zu viel Speicher verbraucht.

Wenn deine Website bei Kinsta richtig eingerichtet ist, solltest du keinen Fehler beim Speicherlimit bekommen. Wenn du diesen Fehler siehst, empfehlen wir dir, deine WordPress-Einstellungen zu überprüfen, um sicherzustellen, dass das Limit nicht versehentlich zu niedrig eingestellt wurde.

Wenn du einen der Business-Tarife von Kinsta nutzt und das PHP-Speicherlimit für deine Website erhöhen möchtest, kannst du ein PHP-Speicherlimit-Add-on kaufen. Das PHP-Speicherlimit-Add-on erhöht das Speicherlimit von 256 MB auf 512 MB und kostet 50 US-Dollar pro Website und Monat. Um dieses Add-on zu erwerben, wende dich bitte über den Live-Chat im MyKinsta-Dashboard an das Account Management Team oder schreibe uns eine E-Mail an [email protected]. Das Add-on ist derzeit nur für Kunden des Business-Tarifs verfügbar. Wenn du einen Starter- oder Pro-Tarif hast, musst du auf einen Business-Tarif upgraden, um das Add-on zu kaufen.

Überprüfen und Ändern des PHP-Speicherlimits

Um dein aktuelles PHP-Speicherlimit für WordPress zu überprüfen, logge dich in das WordPress-Dashboard deiner Website ein und navigiere zu Tools > Site Health.

Gehe auf die Registerkarte Info und klicke auf das Pfeilsymbol neben dem Abschnitt Server, um diesen Abschnitt zu erweitern und dein PHP-Speicherlimit anzuzeigen.

Wenn das Speicherlimit unter 256M liegt, überprüfe deine wp-config.php Datei, um zu sehen, ob die WP_MEMORY_LIMIT geändert wurde und passe sie bei Bedarf an.

Wenn das Speicherlimit 256M beträgt, du aber Probleme mit dem PHP-Speicher hast, empfehlen wir dir, Plugins und Themes zu überprüfen und zu testen. Du kannst eine Staging-Umgebung verwenden, um Plugins und Themes sicher zu deaktivieren und wieder zu aktivieren, um die Ursache für den Speicherverbrauch zu finden.

Wenn der Fehler weiterhin besteht und du die Ursache nicht finden kannst, kannst du einen neuen Chat mit unserem Support-Team eröffnen, um die Logs zu überprüfen und Probleme auf der Serverseite auszuschließen.

PHP aktualisieren

Wir haben das Aktualisieren der PHP-Version deiner Website in MyKinsta so einfach wie möglich gemacht.

Wenn deine Website für das PHP-Update bereit ist, logge dich bei MyKinsta ein und gehe zu WordPress Websites > seitenname > Werkzeuge.

Klicke unter PHP Engine auf das Dropdown-Menü und wähle die PHP-Version aus, auf die du deine Seite aktualisieren möchtest.

Ändere die Schaltfläche PHP-Engine in MyKinsta
Ändere die Schaltfläche PHP-Engine in MyKinsta

Klicke im Pop-up-Fenster PHP-Version ändern auf die gleichnamige Schaltfläche, um die Änderung zu bestätigen.

PHP-Version ändern
PHP-Version ändern

Am Ende der Aktualisierung wird deine PHP-Engine neu gestartet und das Backend (WordPress-Dashboard) deiner Website kann für ein paar Sekunden nicht erreichbar sein. Das Frontend der Website bleibt jedoch erhalten, und die Besucher/innen werden keine Ausfallzeiten erleben.

Während der Aktualisierung kannst du andere Bereiche von MyKinsta aufrufen, aber einige Aktionen, wie die Cache-Verwaltung, sind nicht verfügbar, bis die PHP-Engine neu gestartet wurde.

Sobald die Aktualisierung abgeschlossen ist (in der Regel innerhalb von 3 Minuten oder weniger), erhältst du in MyKinsta eine Benachrichtigung, dass sie beendet ist.

PHP-Module

Die folgenden PHP-Module sind standardmäßig auf deiner WordPress-Website auf Kinsta installiert:

  • bcmath
  • bz2
  • kalender
  • Kern
  • ctype
  • curl
  • datum
  • dom
  • exif
  • FFI
  • fileinfo
  • filter
  • ftp
  • gd
  • gettext
  • hash
  • iconv
  • igbinary
  • imagick
  • imap
  • intl
  • json
  • libxml
  • mbstring
  • mysqli
  • mysqlnd
  • openssl
  • pcntl
  • pcre
  • PDO
  • pdo_mysql
  • Phar
  • posix
  • readline
  • redis
  • Reflection
  • sitzung
  • shmop
  • SimpleXML
  • soap
  • sockets
  • natrium
  • SPL
  • standard
  • sysvmsg
  • sysvsem
  • sysvshm
  • tokenizer
  • xml
  • xmlreader
  • xmlwriter
  • xsl
  • Zend OPcache
  • zip zlib

ionCube ist nicht standardmäßig installiert, kann aber aktiviert werden, wenn deine Website mit PHP 8.1 läuft, und zwar unter MyKinsta > WordPress Websites > seitenname > Werkzeuge > ionCube Loader > Aktivieren.

Wenn du Fragen zu einem bestimmten PHP-Modul hast, das nicht in der obigen Liste aufgeführt ist, wende dich an das Support-Team von Kinsta.

War dieser Artikel hilfreich?