Heim > Backend-Entwicklung > PHP-Tutorial > Verstehen Sie die PHP-FPM-Konfiguration und die Nutzungszusammenfassung in einer Minute

Verstehen Sie die PHP-FPM-Konfiguration und die Nutzungszusammenfassung in einer Minute

慕斯
Freigeben: 2023-04-10 09:42:01
nach vorne
13677 Leute haben es durchsucht

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.

· Verständnis mehrerer Konzepte

· Nginx+PHP-Konfiguration

· Betrieb von PHP-Fpm

1. Verständnis mehrerer Konzepte

1), CGI

CGI steht für „Common Gateway Interface“ (Schnittstelle). Schnittstelle, über die der HTTP-Server mit Programmen auf anderen Maschinen kommuniziert, und seine Programme müssen auf dem Netzwerkserver ausgeführt werden.

HINWEIS:

CGI kann in jeder Sprache geschrieben werden, solange die Sprache über Standard-Eingabe-, Ausgabe- und Umgebungsvariablen verfügt.

2), FastCGI

FastCGI ist ein residentes CGI. Es kann jederzeit ausgeführt werden, solange es nicht jedes Mal ausgeführt wird (dies ist die am meisten kritisierte Fork-and-Execute-Methode). CGI-Modell). Es unterstützt auch verteiltes Rechnen, das heißt, FastCGI-Programme können auf anderen Hosts als dem Website-Server ausgeführt werden und Anfragen von anderen Website-Servern akzeptieren.

FastCGI ist eine sprachunabhängige, offene CGI-Erweiterung mit skalierbarer Architektur. Ihr Hauptverhalten besteht darin, den CGI-Interpreterprozess im Speicher zu halten und dadurch eine höhere Leistung zu erzielen. Wir wissen, dass das wiederholte Laden des CGI-Interpreters der Hauptgrund für die geringe CGI-Leistung ist. Wenn der CGI-Interpreter im Speicher gespeichert und vom FastCGI-Prozessmanager akzeptiert wird, kann er eine gute Leistung, Skalierbarkeit usw. bieten.

Vorteile:

1. FastCGI ist sprachunabhängig;

2. FastCGI läuft unabhängig vom Kern-Webserver und bietet eine sicherere Umgebung als die API. APIs verknüpfen den Code einer Anwendung mit dem Kern-Webserver, was bedeutet, dass eine Anwendung mit der falschen API andere Anwendungen oder den Kernserver beschädigen kann. Der bösartige API-Anwendungscode kann sogar den Schlüssel einer anderen Anwendung oder eines anderen Kernservers stehlen.

3 Die FastCGI-Technologie unterstützt derzeit folgende Sprachen: C/C++, Java, Perl, Tcl, Python, SmallTalk, Ruby usw. Verwandte Module sind auch auf gängigen Servern wie Apache, ISS, Lighttpd verfügbar.

4. FastCGI ist also nicht von der internen Architektur eines Webservers abhängig, sodass FastCGI auch dann stabil bleibt, wenn sich die Servertechnologie ändert Da es sich um einen Multiprozess handelt, verbraucht er mehr Serverspeicher als CGI-Multithreading. Der PHP-CGI-Interpreter verbraucht 7 bis 25 Megabyte Speicher pro Prozess. Multiplizieren Sie diese Zahl mit 50 oder 100, um eine große Speichermenge zu erhalten.

Nginx 0.8.46+PHP 5.2.14 (FastCGI) Server hat 30.000 gleichzeitige Verbindungen. Die 10 gestarteten Nginx-Prozesse verbrauchen 150 MB Speicher (15 MB*10 = 150 MB) und die 64 gestarteten PHP-CGI-Prozesse verbrauchen 1280 MB Speicher *64=1280 MB) plus dem vom System selbst verbrauchten Speicher beträgt der Gesamtspeicherverbrauch weniger als 2 GB. Wenn der Serverspeicher klein ist, können Sie nur 25 PHP-CGI-Prozesse öffnen, sodass der von PHP-CGI verbrauchte Gesamtspeicher nur 500 MB beträgt.

Die oben genannten Daten stammen aus Nginx 0.8.x + PHP 5.2.13 (FastCGI), um einen Webserver zu erstellen, der zehnmal besser als Apache (Version 6) ist.

Prinzip:

1. Wenn der Webserver startet, wird der FastCGI-Prozessmanager initialisiert, startet mehrere CGI-Interpreterprozesse (PHP-CGI) und wartet auf Verbindungen vom Webserver

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

FastCGI

untergeordnete Prozess wartet dann auf die nächste Verbindung vom FastCGI

Prozessmanager (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

502

Fehler

gemeldet 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-Fehler

geä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!

Verwandte Etiketten:
Quelle:csdn.net
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage