Heim > Artikel > Backend-Entwicklung > Einführung in die PHP-FPM-Parameterkonfiguration und detaillierte Erläuterung der Parameteroptimierung unter Linux
Dieser Artikel erklärt hauptsächlich die chinesische detaillierte Beschreibung einiger wichtiger Parameter von PHP-FPM unter Linux und stellt detailliert die Parameteroptimierung von PHP-FPM im Hinblick auf die Leistung vor
php -fpm Detaillierte Erläuterung wichtiger Parameter von .conf
pid = run/php-fpm.pid
#pid-Einstellung, der Standardwert ist var/run /php im Installationsverzeichnis -fpm.pid wird empfohlen,
error_log = log/php-fpm.log
# Fehlerprotokoll zu aktivieren, der Standardwert ist var/log /php-fpm.log im Installationsverzeichnis
log_level = Notice
#Error Level sind: Alert (muss sofort bearbeitet werden), Error (Fehlersituation), Warnung (Warnsituation), Hinweis (allgemeine wichtige Informationen), Debug (Debugging-Informationen). dass ein SIGSEGV- oder SIGBUS-Fehler innerhalb des durch Emergency_restart_interval festgelegten Werts auftritt. Wenn die Anzahl der PHP-CGI-Prozesse Emergency_Restart_Threshold überschreitet, wird PHP-FPM ordnungsgemäß neu gestartet. Diese beiden Optionen bleiben im Allgemeinen auf ihren Standardwerten.
process_control_timeout = 0
#Legen Sie das Zeitlimit fest, damit der untergeordnete Prozess das Wiederverwendungssignal des Hauptprozesses akzeptiert. Verfügbare Einheiten: s (Sekunden), m (Minuten), h (Stunden). ), Oder d (Tage) Standardeinheit: s (Sekunden). , wenn es zum Debuggen dient, ändern Sie es in „Nein“. In FPM ist es möglich, mehrere Prozesspools mit unterschiedlichen Einstellungen auszuführen. Diese Einstellungen können für jeden Prozesspool individuell festgelegt werden.
listen = 127.0.0.1:9000#fpm Überwachungsport, die von PHP in Nginx verarbeitete Adresse, im Allgemeinen ist der Standardwert ausreichend. Verfügbare Formate sind: „ip:port“, „port“, „/path/to/unix/socket“. Jeder Prozesspool muss festgelegt werden.
listen.backlog = -1#Backlog-Nummer, -1 bedeutet unbegrenzt, wird vom Betriebssystem bestimmt, kommentieren Sie diese Zeile einfach aus.
listen.allowed_clients = 127.0.0.1#Zugriff auf die IP des FastCGI-Prozesses zulassen, um die IP nicht einzuschränken Hosts können auch auf diesen FPM-Prozess zugreifen. Listen sollten auf eine lokale IP eingestellt sein, auf die zugegriffen werden kann. Der Standardwert ist beliebig. Jede Adresse wird durch ein Komma getrennt. Wenn sie nicht gesetzt oder leer ist, darf jeder Server eine Verbindung anfordern
listen.owner = wwwlisten.group = wwwlisten.mode = 0666
Benutzer = www
Gruppe = www
# Konto und Gruppe zum Starten des Prozesses
pm = dynamisch
# Für dedizierte Server kann pm auf statisch gesetzt werden.
pm.max_children #,
Maximale Anzahl untergeordneter Prozesse
pm.start_servers #
pm.min_spare_servers #, um die Mindestanzahl an Leerlaufprozessen sicherzustellen. Wenn der Leerlaufprozess kleiner als dieser Wert ist, erstellen Sie einen neuen untergeordneten Prozess
pm.max_spare_servers #
, um die Anzahl der Leerlaufprozesse sicherzustellen Maximalwert, wenn der Leerlaufprozess größer als dieser Wert ist, wird dieser bereinigt
pm.max_requests = 1000#Set Die Anzahl der verarbeiteten Anforderungen, bevor jeder untergeordnete Prozess neu gestartet wird. Dies ist sehr nützlich für Module von Drittanbietern. Wenn die Anforderung auf „0“ gesetzt ist, entspricht sie der Umgebungsvariable PHP_FCGI_MAX_REQUESTS .
pm.status_path = /status
#Die URL der FPM-Statusseite kann nicht aufgerufen werden Verwenden Sie
ping.path = /ping#Die Ping-URL der FPM-Überwachungsseite. Wenn sie nicht festgelegt ist, kann auf diese Seite nicht zugegriffen werden Erkennen Sie extern, ob FPM aktiv ist und auf Anfragen antworten kann. Bitte beachten Sie, dass es mit einem Schrägstrich (/) beginnen muss.
ping.response = pong# Wird verwendet, um die Antwort auf die Ping-Anfrage zu definieren. Der zurückgegebene Text/einfache Formattext ist HTTP 200. Standardwert: pong.
request_terminate_timeout = 0#Legen Sie die Timeout-Abbruchzeit für eine einzelne Anfrage fest. Diese Option kann für Skripte nützlich sein, bei denen die „max_execution_time“ in der php.ini-Einstellung die Ausführung von Skripten nicht abbricht Aus bestimmten Gründen bedeutet die Einstellung „0“ „Aus“. Sie können versuchen, diese Option zu ändern, wenn 502-Fehler häufig auftreten.
request_slowlog_timeout = 10s#Wenn eine Anfrage den Timeout-Zeitraum festlegt, werden die entsprechenden PHP-Call-Stack-Informationen vollständig in das langsame Protokoll geschrieben. Auf „0“ gesetzt bedeutet „Aus“. '
slowlog = log/$pool.log.slow
#Langsames Anforderungsprotokoll, verwendet mit request_slowlog_timeout
rlimit_files = 1024
#Set der rlimit-Grenzwert des Dateiöffnungsdeskriptors: Der systemdefinierte Wert des Standardöffnungshandles ist 1024, der mit ulimit -n angezeigt und mit ulimit -n 2048 geändert werden kann.
rlimit_core = 0
#Legen Sie den maximalen Kern-rlimit-Grenzwert fest. Verfügbare Werte: „unbegrenzt“, 0 oder positive Ganzzahl. Standardwert: systemdefinierter Wert.
chroot =
#Chroot-Verzeichnis beim Start. Das definierte Verzeichnis muss ein absoluter Pfad sein. Wenn nicht festgelegt, wird chroot nicht verwendet.
chdir =
#Legen Sie das Startverzeichnis fest, in das beim Start automatisch verwiesen wird. Das definierte Verzeichnis muss ein absoluter Pfad sein: aktuelles Verzeichnis oder /directory (beim Chrooten)
catch_workers_output = ja
#Umleiten von stdout und stderr während des laufenden Prozesses zur Hauptfehlerprotokolldatei. Wenn nicht festgelegt, werden stdout und stderr gemäß den FastCGI-Standards umgeleitet Wert: leer.
php-fpm-Parameteroptimierung
pm = dynamisch; 🎜>Gibt an, welche Prozessnummernverwaltungsmethode verwendet wird
Gibt an, dass die Anzahl der PHP-FPM-Prozesse dynamisch ist, beginnend mit der durch pm.start_servers angegebenen Anzahl Wenn viele Anfragen vorliegen, wird die Anzahl der inaktiven Prozesse automatisch erhöht. Wenn die Anzahl der Prozesse groß ist, wird die Anzahl der redundanten Prozesse entsprechend bereinigt ist nicht mehr als pm.max_spare_servers
statischbedeutet, dass die Anzahl der PHP-FPM-Prozesse statisch ist. Die Anzahl der Prozesse ist die von pm.max_children angegebene Anzahl von Anfang bis Ende wird nicht mehr erhöht oder verringert.
pm.max_children = 300; Anzahl der im statischen Modus gestarteten PHP-FPM-Prozesse pm.start_servers = 20; Anzahl der gestarteten PHP-FPM-Prozesse im dynamischen Modus
pm.min_spare_servers = 5; Die Mindestanzahl der PHP-FPM-Prozesse im dynamischen Modus
pm.max_spare_servers = 35;Die maximale Anzahl von PHP-FPM-Prozessen im dynamischen Modus
Wenn pm statisch ist, dann ist tatsächlich nur der Parameter pm.max_children wirksam. Das System öffnet eine festgelegte Anzahl von PHP-FPM-Prozessen
pm. max_requests = 10240;
Das größte Problem während des Nginx-PHP-FPM-Konfigurationsprozesses ist ein interner Verlust: Die Auslastung des Servers ist nicht groß, aber die Speichernutzung nimmt schnell zu und verbraucht dann schnell die Swap-Partition Das System hängt sich schnell auf! Tatsächlich weist PHP-CGI laut der offiziellen Einführung keine Speicherlecks auf. Nach Abschluss jeder Anforderung fordert PHP-CGI den Speicher zurück, gibt ihn jedoch nicht an das Betriebssystem frei von php-cgi belegt sein.
Die offizielle Lösung besteht darin, den Wert von PHP_FCGI_MAX_REQUESTS zu verringern. Wenn Sie php-fpm verwenden, ist die entsprechende php-fpm.conf max_requests. Dieser Wert gibt an, wie viele Anfragen gesendet werden, bevor der Thread neu gestartet wird . Wir müssen diesen Wert entsprechend senken, damit php-fpm automatisch Speicher freigibt. Er ist nicht 51200 und so weiter. Tatsächlich gibt es einen anderen Wert, der damit zusammenhängt php-fpm Wie viele Prozesse werden erstellt, sodass der tatsächliche Speicherverbrauch bei jeder Anforderung max_children*max_requests*memory beträgt. Auf dieser Grundlage können wir den Speicherverbrauch abschätzen, sodass kein Skript zum Beenden geschrieben werden muss.
request_terminate_timeout = 30;
Maximale Ausführungszeit, die auch in php.ini konfiguriert werden kann (max_execution_time)
request_slowlog_timeout = 2 ; Langsames Protokoll aktivieren
slowlog = log/$pool.log.slow; Langsamer Protokollpfad
rlimit_files = 1024; php-fpm Einschränkungen für offene Dateideskriptoren
Die Parameter von php-fpm.conf sind klar angegeben und Sie sollten sie sich merken können, solange Sie sie ein paar Mal lesen. Was den Leistungsplan php-fpm betrifft sollte anhand der tatsächlichen Situation ermittelt und mehrmals getestet werden. Erhalten Sie die beste Konfigurationslösung.
Detaillierte Schritte für Daten Migration und Datenausfüllung in Laravel
Das obige ist der detaillierte Inhalt vonEinführung in die PHP-FPM-Parameterkonfiguration und detaillierte Erläuterung der Parameteroptimierung unter Linux. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!