Wir haben so viel über PHP gelernt. Ich frage mich, ob Sie die PHP-FPM-Konfiguration und -Nutzungszusammenfassung vollständig beherrschen. Wenn nicht, folgen Sie diesem Artikel, um weiterzulernen.
PHP-FPM ist ein PHP-FastCGI-Manager. Es dient dazu, die FastCGI-Prozessverwaltung in den PHP-Quellcode einzuführen es kann verwendet werden. Jetzt können wir es direkt in PHP 5.3.2 und neueren Versionen öffnen und verwenden, da PHP es ab dieser Version in das Softwarepaket aufgenommen hat und es daher nicht mehr als Patch-Paket existiert.
3. Wenn die Client-Anfrage den Webserver erreicht, wählt der FastCGI-Prozessmanager einen CGI-Interpreter aus und stellt eine Verbindung zu ihm her, und der Webserver sendet die CGI-Umgebungsvariablen und Standardeingaben an den FastCGI-Unterprozess PHP-CGI.
4. Nachdem der FastCGI-Unterprozess die Verarbeitung abgeschlossen hat, gibt er über dieselbe Verbindung Standardausgabe- und Fehlerinformationen an den Webserver zurück. Wenn der untergeordnete FastCGI-Prozess die Verbindung schließt, wird die Anfrage verarbeitet. Der
FastCGIuntergeordnete Prozess wartet dann auf die nächste Verbindung vom FastCGIProzessmanager (der auf dem Webserver läuft) und verarbeitet diese. Im CGI-Modus wird PHP-CGI hier beendet.
In der obigen Situation können Sie sich vorstellen, wie langsam CGI normalerweise ist. Jede Webanfrage an PHP muss php.ini neu analysieren, alle Erweiterungen neu laden und alle Datenstrukturen neu initialisieren. Bei FastCGI geschieht dies alles nur einmal, nämlich beim Start des Prozesses. Außerdem funktionieren datenbankpersistente Verbindungen.
HINWEIS:
Der Hauptvorteil von FastCGI besteht darin, dynamische Sprachen vom HTTP-Server zu trennen, sodass Nginx und PHP/PHP-FPM häufig auf verschiedenen Servern bereitgestellt werden, um den Druck auf den Front-End-Nginx-Server zu verteilen, sodass Nginx ausschließlich arbeiten kann Behandelt statische Anfragen und leitet dynamische Anfragen weiter, und der PHP/PHP-FPM-Server analysiert ausschließlich dynamische PHP-Anfragen.
3), PHP-CGI
PHP-CGI ist der FastCGI-Manager, der mit PHP geliefert wird.
Nachteile von PHP-CGI:
1. Nach dem Ändern der php.ini-Konfiguration in php-cgi müssen Sie php-cgi neu starten, damit die neue php-ini wirksam wird, und ein reibungsloser Neustart ist nicht möglich.
2. Beenden Sie den PHP-CGI-Prozess direkt und PHP kann nicht ausgeführt werden (PHP-FPM und Spawn-FCGI haben dieses Problem nicht, der Daemon-Prozess generiert reibungslos neue untergeordnete Prozesse).
4), Spawn-FCGI
Spawn-FCGI ist ein allgemeiner FastCGI-Verwaltungsserver, der Teil von lighttpd ist. Viele Leute verwenden den Spawn-FCGI von Lighttpd für Verwaltungsarbeiten im FastCGI-Modus. Das Aufkommen von PHP-FPM hat einige Probleme etwas gemildert, aber PHP-FPM hat den Nachteil, dass es neu kompiliert werden muss, was zu erheblichen Risiken führen kann (siehe), dass PHP direkt in PHP 5.3.3 verwendet werden kann -FPM.
Spawn-FCGI ist jetzt ein separates Projekt, das stabiler ist und die Konfiguration vieler Websites erleichtert. Viele Websites haben es mit Nginx gepaart, um dynamische Webseiten zu lösen. Das neueste Lighttpd enthält diesen Teil nicht (http://www.lighttpd.net/search?q=Spawn-FCGI), aber er ist in früheren Versionen zu finden. Es ist in der Version lighttpd-1.4.15
enthalten (http://www.lighttpd.net/download/lighttpd-1.4.15.tar.gz. Die aktuelle Download-Adresse von Spawn-FCGI ist http://). redmine .lighttpd.net/projects/spawn-fcgi, die neueste Version ist http://www.lighttpd.net/download/spawn-fcgi-1.6.3.tar.gz.
HINWEIS:
Für das neueste Spawn-FCGI können Sie auf der Website lighttpd.net nach „Spawn-FCGI“ suchen, um die Veröffentlichungsadresse der neuesten Version zu finden.
5) ist im Vergleich zu Spawn-FCGI
PHP-FPM sehr bequem zu verwenden. Die Konfiguration erfolgt in der Datei PHP-FPM.ini und der Start und Neustart kann über php/sbin/PHP-FPM erfolgen. Praktischer ist, dass Sie php.ini nach dem Ändern direkt mit PHP-FPM laden können. Sie können die Änderung und das Laden von php.ini abschließen, ohne den Prozess abzubrechen Verbessern Sie die Leistung von PHP. Die CPU-Recyclinggeschwindigkeit des von PHP-FPM gesteuerten Prozesses ist relativ langsam und der Speicher wird gleichmäßig zugewiesen.
Die CPU des von Spawn-FCGI gesteuerten Prozesses sinkt schnell und die Speicherzuweisung ist ungleichmäßig. Es gibt viele Prozesse, die scheinbar nicht zugeordnet sind, während andere stark ausgelastet sind. Dies kann durch eine ungleichmäßige Verteilung der Prozessaufgaben verursacht werden. Dies führt auch zu einer Verringerung der Gesamtreaktionsgeschwindigkeit. Die sinnvolle Verteilung von PHP-FPM führt zur Angabe der Gesamtantwort und des Durchschnitts der Aufgaben. 2. Nginx+PHP-Konfiguration
2. Optimierung der maximalen Anzahl von Anfragen
pm.max_requests = 10240
HINWEIS:
Dies wird verwendet, um Speicherlecks zu beheben, die durch den PHP-Parser oder referenzierte Bibliotheken von Drittanbietern verursacht werden.
Maximale Anzahl von Anfragen: bezieht sich auf die Anzahl der Anfragen, die ein PHP-FPM-Workerprozess nach der Verarbeitung beendet.
3. Optimierung der maximalen Ausführungszeit (php.ini)
request_terminate_timeout = 20
HINWEIS:
Dies wird verwendet, um das Problem zu lösen, dass
502Fehlergemeldet wird, weil die PHP-Ausführungszeit zu lang ist.
Diese Dauerkonfiguration kann in php.ini (max_execution_time) oder php-fpm.conf konfiguriert werden. Um die globale Konfiguration nicht zu beeinträchtigen, kann sie in php-fpm.conf implementiert werden.
Es ist erwähnenswert, dass es in Verbindung mit max_fail (vergrößern) und fail_timeout (verkleinern) in nginx.conf konfiguriert werden muss.
nginx.conf:
location ~ .php$ {
…fastcgi_connect_timeout 180;fastcgi_read_timeout 600;
fastcgi_send_timeout 600; …}HINWEIS:
PHP-FPM-Einstellungen Die Die maximale Ausführungszeit des Skripts ist lang genug, aber beim Ausführen des zeitaufwändigen PHP-Skripts habe ich festgestellt, dass sich der Nginx-Fehler
in einen 504-Fehlergeändert hat. Dies liegt daran, dass wir nur die PHP-Konfiguration geändert haben und Nginx auch über die Konfiguration factcgi_connect/read/send_timeout bezüglich des Timeouts für die Kommunikation mit dem Upstream-Server verfügt.
4. Fehlerbehebung bei hoher CPU-Auslastung von php-fpm
Top-Befehl:
Nachdem Sie den Top-Befehl direkt ausgeführt haben, geben Sie 1 ein, um die CPU-Auslastung jedes Kerns anzuzeigen:
sar-Befehl:
sar und Installation der iostat-Befehle: sysstat.x86_64: Die sar- und iostat-Systemüberwachungsbefehle
yum install -y sysstat.x86_64
Ausführung:
$sar -P ALL 1 100
HINWEIS:
-P ALL bedeutet „Alle überwachen“. Kerne; :
Das Obige ist das langsame Protokoll zum Einschalten von PHP-FPM. Der Zeitschwellenwert beträgt 2 Sekunden. Ausführung:
grep -v "^$" php.slow.log | |. sort |uniq -c |. Head -n 50 Datei Anzahl der Male
Sortieren -k1,1nr: Sortieren nach dem ersten Feld, Wert und in umgekehrter Reihenfolge
Kopf –n 10: Holen Sie sich die ersten 10 Datenzeilen
PS:
Der Zweck des Einschaltens Slow Log dient zur Verfolgung und Analyse. Die Ausführungszeit eines PHP-Skripts überschreitet die festgelegte request_slowlog_timeout. Wenn die festgelegte Zeit überschritten wird, wird das Skript aufgezeichnet.
3. PHP-Fpm-Betrieb
php-fpm unterstützt unter PHP5.3.3 keine Befehle mehr wie /usr/local/php/sbin/php-fpm (start|stop|reload), die PHP-fpm zuvor benötigte um die Signalsteuerung zu verwenden:
Master-Prozess kann die folgenden Signale verstehen
INT, TERM wird sofort beendet;
USR1 öffnet die Protokolldatei erneut;
USR2 lädt alle Arbeitsprozesse reibungslos neu und lädt die Konfiguration und Binärdatei neu module;
Beispiel:
php-fpm Herunterfahren: kill -INT`cat /usr/local/php/var/run/php-fpm.pid`
php-fpm Neustart: kill -USR2`cat /usr / local/php/var/run/php-fpm.pid`
Anzahl der PHP-FPM-Prozesse anzeigen:
$ps aux |. Empfohlenes Lernen: „
PHP-Video-Tutorial“
Das obige ist der detaillierte Inhalt vonVerstehen Sie die PHP-FPM-Konfiguration und die Nutzungszusammenfassung in einer Minute. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!