Heim >Backend-Entwicklung >PHP-Tutorial >php-fpm.conf Konfigurationsdatei Chinesisch und wichtige Parameterbeschreibungen
php-fpm-Workflow
Der vollständige Name von php-fpm lautet PHP FastCGI Process Manager
Nach dem Start von php-fpm liest es zuerst php.ini und dann In der entsprechenden conf-Konfigurationsdatei kann die conf-Konfiguration die Konfiguration von php.ini überschreiben.
Nach dem Start von php-fpm wird ein Masterprozess erstellt, der Port 9000 überwacht (konfigurierbar). Der Masterprozess erstellt mehrere Unterprozesse basierend auf fpm.conf/www.conf, und die Unterprozesse werden daran gewöhnt das eigentliche Geschäft abwickeln.
Wenn ein Client (z. B. Nginx) eine Verbindung zu Port 9000 herstellt, akzeptiert der inaktive Unterprozess diese selbst. Wenn alle Unterprozesse beschäftigt sind, wird die neue Verbindung, die angenommen werden soll, vom Master in die Warteschlange gestellt Warten Sie auf den FPM-Unterprozess.
Die Länge der Warteschlange, in der auf die Annahme wartende Halbverbindungen gespeichert werden, wird von listen.backlog konfiguriert.
Verwandte Lernempfehlungen: php-Programmierung (Video)
Alle relativen Pfade in der Konfiguration beziehen sich auf den Installationspfad von PHP.
Zusätzlich zur Konfigurationsdatei php-fpm.conf gibt es normalerweise weitere *.conf-Konfigurationsdateien (Sie können sie auch direkt in php-fpm.conf konfigurieren), um den Prozesspool zu konfigurieren. Verschiedene Prozesspools können unterschiedliche Ausführungen verwenden durch Benutzer, lauschen Sie auf verschiedene Ports und verarbeiten Sie unterschiedliche Aufgaben; mehrere Prozesspools teilen sich eine globale Konfiguration.
include=/opt/remi/php56/root/etc/php-fpm.d/*.conf, um andere Konfigurationsdateien zu laden.
php-fpm globale Konfigurationsparameter Chinesische Beschreibung:
Der Name des Pools wird für Protokolle und Statistiken verwendet.pid = /opt/remi/php56/root/var/run/php-fpm/php-fpm.pid
#pid Prozessdatei, der Standardwert ist keine.error_log = /opt/remi/php56/root/var/log/php-fpm/error.log
#Speicherort des Fehlerprotokolls, Standard: Installationspfad #INSTALL_PREFIX#/log/php-fpm.log. Wenn es auf „syslog“ eingestellt ist, wird das Protokoll an den syslogd-Dienst gesendet, ohne in die Datei geschrieben zu werden.syslog.facility = daemon
#Schreiben Sie das Protokoll in das Systemprotokoll. Linux ist noch nicht vertraut genug, also ignorieren Sie es vorerst.syslog.ident = php-fpm
#Systemprotokollidentifikation Wenn mehrere FPM-Prozesse ausgeführt werden, müssen Sie dies verwenden, um zu unterscheiden, zu welchen Protokollen sie gehören. ?? Wenn die Anzahl der untergeordneten Prozesse mit SIGSEGV oder SIGBUS den durch den Parameter „emergency_restart_threshold“ festgelegten Wert überschreitet, wird fpm ordnungsgemäß neu gestartet. Ein Wert von 0 zeigt an, dass diese Funktion ausgeschaltet ist. Die verfügbaren Einheiten sind: s Sekunden, m Minuten, h Stunden und d Tage.process_control_timeout = 0
#Legen Sie das Timeout fest, damit der untergeordnete Prozess das Wiederverwendungssignal des Hauptprozesses akzeptiert. Ich verstehe das jeden Tag. Nach dieser Zeit kann es nicht wiederverwendet werden?process.max = 128
#Bei der dynamischen Verwaltung untergeordneter Prozesse ist dies die maximale Anzahl von Prozessen, die fpm forken kann. 0 bedeutet keine Begrenzung. Dies ist die Gesamtzahl der untergeordneten Prozesse, die von allen Prozesspools gestartet werden können. Verwenden Sie diese mit Vorsicht .process.priority = -19
#Legen Sie die Priorität des untergeordneten Prozesses fest. Dies ist wirksam, wenn der Master-Prozess als Root-Benutzer gestartet wird. Wenn nicht festgelegt, erbt der untergeordnete Prozess die Priorität des Master-Prozesses mit a Wertebereich von -19 (höchster Wert) bis 20 (niedrigster Wert), nicht standardmäßig festgelegt.daemonize = ja
#Für das Debuggen von Fehlern auf „Nein“ setzen, der Standardwert ist „Ja“.rlimit_files = 1024
#Legen Sie die maximale Anzahl von Dateien fest, die der Masterprozess öffnen kann. Der Standardwert ist der Systemwert.rlimit_core = 0
#Master-Prozesskern-rlimit-Grenzwert; optional unbegrenzt oder eine Ganzzahl von >=0, der Standardwert ist der Systemwert.events.mechanism = epoll
#Ereignisverarbeitungsmechanismus, automatische Erkennung standardmäßig, optionale Werte: select, poll, epoll (linux>=2.5.44), kqueue, /dev/poll, portsystemd_interval = 10s
# Wenn fpm als Systemdienst festgelegt ist, wie oft der Status an den Server gemeldet wird, in Einheiten von s, m, h.
php-fpm-Prozesspool-Konfigurationspool Definitionen:
Sie können eine beliebige Anzahl von Pools unter verschiedenen Überwachungsports und verschiedenen Verwaltungsoptionen ausführen, und es gibt keine Begrenzung für die Anzahl;
user = apachegroup = apache
#Pool fpm mit den Berechtigungen von welchem Benutzer und welcher Gruppe ausführen.
Verwenden Sie Apache, um auf bestimmte Verzeichnisse wie den httpd-Dienst zuzugreifen.
listen = 127.0.0.1:9000#Die Überwachungs-IP und der Port können /path/to/unix/socket sein, um Unix-Sockets mit besserer Leistung abzuhören.
listen.backlog = 65535
#Die Größe der nicht akzeptierten Socket-Warteschlange ist -1 auf FreeBSD und OpenBSD, und der Standardwert ist 65535 auf anderen Plattformen. Dies ist wichtig, wenn die Parallelität hoch ist. Durch angemessene Einstellungen werden Anfragen in der Warteschlange rechtzeitig verarbeitet Wenn es zu groß ist, gibt es zu viel Rückstand und Verarbeitung. Danach wartete Nginx auf eine Zeitüberschreitung und trennte die Socket-Verbindung mit fpm, was ein Fehler war. Verwenden Sie nicht -1, es wird empfohlen, über 1024 zu liegen, vorzugsweise eine Potenz von 2. #Ein Pool teilt sich eine Backlog-Warteschlange und alle Poolprozesse gehen zu dieser Warteschlange, um Verbindungen anzunehmen.#Die maximale Anzahl ist durch die Systemkonfiguration cat /proc/sys/net/core/somaxconn begrenzt, Systemkonfigurationsänderung: vim /etc/sysctl.conf, net.core.somaxconn = 2000 hinzufügen, die maximale Anzahl beträgt 2000, und dann die maximale Anzahl von PHP Der Rückstand kann 2000 erreichen.
listen.owner = apache
listen.group = apache
listen.mode = 0660
#Geben Sie bei Verwendung der Socket-Verbindungsmethode den Benutzer mit den Unix-Socket-Berechtigungen an kann kommentieren, wenn eine TCP-Verbindung verwendet wird. Entfernen Sie
listen.allowed_clients = 127.0.0.1
#Legen Sie die Adresse fest, die eine Verbindung zu fpm herstellen darf. Wenn keine Adresse konfiguriert ist, kann dies geschehen standardmäßig verbunden sein.process.priority = -19
#Die Berechtigungen des Poolprozesses erfordern auch, dass der Masterprozess der Root-Benutzer ist. Wenn nicht festgelegt, wird die Priorität des Masterprozesses geerbt.pm = dynamisch
# Verwaltungsmethode für untergeordnete Prozesse beim Start, optionale Werte: statisch (angegebene Anzahl, die beim Start erstellt wird), dynamisch (entsprechend der Situation beim Start erstellt, mindestens einer), OnDemand (beim Start werden keine untergeordneten Prozesse erstellt , Nur bei Bedarf erstellen)pm.max_children = 5
#Der Pool kann bis zu 5 Prozesse gleichzeitig haben und alle drei Verwaltungsmethoden müssen konfiguriert seinpm.start_servers = 2
#Fpm erstellt 2 untergeordnete Prozesse Beim Start gilt nur die dynamische dynamische Verwaltungsmethodepm.min_spare_servers = 2
#Mindestens 2 untergeordnete Prozesse werden beibehalten, wenn diese Anzahl nicht ausreicht, wird nur eine dynamische dynamische Verwaltung erstellt Methode ist anwendbar.pm.max_spare_servers = 3
#Die maximale Anzahl untergeordneter Prozesse, wenn der Server inaktiv ist. Wenn zu viele vorhanden sind, wird nur die dynamische dynamische Verwaltungsmethode angewendet.pm.process_idle_timeout = 10s
# Der untergeordnete Prozess wird nach 10 Sekunden Inaktivität abgebrochen.pm.max_requests = 500
#Jeder untergeordnete Prozess wird nach der Verarbeitung von maximal 500 Anfragen recycelt, wodurch Speicherlecks verhindert werden können.pm.status_path string
#Die URL der FPM-Statusseite. Wenn nicht festgelegt, kann nicht auf die Statusseite zugegriffen werden. Standardeinstellung: Keine.
ping.path string
#Ping-URL der FPM-Überwachungsseite. Wenn nicht festgelegt, kann nicht auf die Ping-Seite zugegriffen werden. Diese Seite wird verwendet, um extern zu erkennen, ob das FPM aktiv ist und auf Anfragen reagieren kann. Beachten Sie, dass es mit einem Schrägstrich (/) beginnen muss.
ping.response string
# Wird verwendet, um die Antwort auf die Ping-Anfrage zu definieren. Gibt Text/einfach formatierten Text als HTTP 200 zurück. Standardwert: Pong.process.priority int
#Legen Sie die nice(2)-Priorität des Workers fest (falls festgelegt). Der Wert reicht von -19 (höchste Priorität) bis 20 (niedrigere Priorität). Standardwert: Nicht festlegenPräfixzeichenfolge
#Das Präfix, das beim Erkennen des Pfads verwendet wirdaccess.log = var/log/$pool.access.log
#Zugriff auf das Dateiprotokoll, das nutzlos ist, z. B. yii2 zeichnet den Zugriff auf Jedes Mal zeichnet index.php nur die echte PHP-Datei auf.slowlog = var/log/$pool.log.slow
#Das Protokoll einer PHP-Datei, die zu langsam zur Ausführung ist, zeichnet genau auf, welche Codezeile zu langsam ist. Dies ist sehr nützlich und wird zu gegebener Zeit wirksam Satz.request_slowlog_timeout = 2s
#Langsames Protokoll wird geschrieben, wenn diese Laufzeit überschritten wirdrequest_terminate_timeout = 3s
#Die von php.ini festgelegte maximale Ausführungszeit wird nicht wirksam, dies führt zum Tod die Ausführungszeit Lange Anfrage.rlimit_files = 1024
#Maximale Anzahl offener Handles, Standard ist der Systemwert.rlimit_core = 0
#Die maximale Anzahl der verwendeten Kerne, der Standardwert ist die Systemzuweisung.chroot = /path
#Der Pfad muss ein absoluter Pfad sein. Durch Ändern des Verzeichnisses des untergeordneten Prozesses kann das Lesen und Schreiben des Dateisystems durch den Prozess vom eigentlichen Betriebssystemdateisystem isoliert werden, was der Sicherheit dient.chdir = /var/www
#Ändern Sie das aktuelle Arbeitsverzeichnis. Sie können einen relativen Pfad verwenden. Der Standardwert ist das aktuelle Verzeichnis oder Chroot.
catch_workers_output = ja
#Standardausgabe stdout und Standardfehler stderr zum Hauptfehlerprotokoll umleiten. Wenn diese beiden Protokolle nicht festgelegt sind, werden sie an /dev/null weitergeleitet. Bei hoher Auslastung führt diese Konfiguration zu einigen Verzögerungen Millisekunden, standardmäßig nicht aktiviert.clear_env = nein
#Ob die Umgebungsvariablen beim Erstellen des Arbeitsprozesses gelöscht werden sollen. Wenn ja, kann der untergeordnete Prozess getenv() nicht auf $_ENV und $_SERVER zugreifen.security.limit_extensions = .php .php3 .php4 .php5
#Beschränken Sie aus Sicherheitsgründen das Suffix des ausführbaren Skripts.#Geben Sie zusätzliche php.ini-Konfigurationen für den aktuellen Pool an, z. B. die Angabe, wo sich das Fehlerprotokoll des aktuellen Pools befindet geschrieben.
php_value/php_flag
#Der Inhalt von php.ini kann festgelegt und durch ini_set überschrieben werdenphp_admin_value/php_admin_flag
#Dies ist das Gleiche wie oben, wird jedoch nicht durch ini_set überschrieben.#Wenn das Flag gesetzt ist, kann der Wert nur ein, aus, 1, 0, wahr, falsch, ja oder nein sein, andere Wertetypen müssen den Wert verwenden.
php_flag[display_errors] = aus
php_admin_value[error_log] = /var/log/fpm-php.www.log
php_admin_flag[log_errors] = ein
php_admin_value[memory_limit] = 32M
#Beim Festlegen von „disable_functions“ und „disable_classes“ in dieser Methode werden die Einstellungen von php.ini nicht überschrieben, sondern nur angehängt.
Hinweis: Der PHP-Konfigurationswert wird über php_value oder php_flag festgelegt und überschreibt den vorherigen Wert.
Die in der php.ini definierten Werte für „disable_functions“ oder „disable_classes“ werden nicht überschrieben, sondern die neuen Einstellungen werden an die ursprünglichen Werte angehängt.
Der mit php_admin_value oder php_admin_flag definierte Wert kann nicht durch ini_set() im PHP-Code überschrieben werden.
Seit 5.3.3 können PHP-Einstellungen auch über den Webserver eingestellt werden.
nginx kommuniziert mit PHP-FPM über UnixSock:
Anwendbare Szenarien: NginX und PHP-FPM befinden sich auf demselben Server. In diesem Fall kann die UnixSocket-Interprozesskommunikation direkt anstelle der TCP-Port-Kommunikation verwendet werden Sparen Sie Zeit beim Herstellen einer Verbindung und verbessern Sie so die Leistung.
1. Stellen Sie die Listenfunktion von php-fpm auf /opt/remi/php56/root/var/run/php-fpm/php567-fpm.sock ein (relativer Pfad kann verwendet werden) und starten Sie dann fpm und php567 neu. wird automatisch erstellt. fpm.sock-Datei
2. Ändern Sie den Parameter fastcgi_pass in unix:/opt/remi/php56/root/var/run/php-fpm/php567-fpm.sock; Wenn Sie die Datei php567-fpm.sock verwenden, müssen Sie sicherstellen, dass Nginx über die Berechtigung zum Zugriff auf die Datei php567-fpm.sock verfügt.
Zusammenfassung:
Die Sock-Datei kann überall erstellt werden, solange fpm die Berechtigung hat, die Datei in diesem Verzeichnis zu schreiben, und nginx die Berechtigung hat, sie zu lesen. Die TCP-Verbindung ist stabiler, da das TCP-Protokoll die Richtigkeit der Daten gewährleistet, Sock jedoch weniger Datenkopien und Kontextwechsel aufweist und weniger Ressourcen verbraucht. Sock kann jedoch nur verwendet werden, wenn sich Nginx und FPM auf demselben Computer befinden.
php-fpm-Prozessstatusüberwachung
1. Nginx-Konfiguration: Wenn Sie auf eine Statusanfrage stoßen, leiten Sie diese direkt an php
location ~^/status$ {
fastcgi_param SCRIPT_FILENAME $fastcgi_script_name;
weiterfastcgi_params;
fastcgi_pass 127.0.0.1:9000;
}
2. fpm-Konfiguration: pm.status_path = /status
3. Dann erneut fpm und nginx aufrufen, im Browser darauf zugreifen und sehen :
Die Ergebnisse werden standardmäßig in Text/Plain angezeigt. Sie können die Parameter ?json/html/xml übergeben, um die Ergebnisse in JSON bzw. anderen Formaten zu erhalten; der Parameter full kann die Details jedes untergeordneten Prozesses anzeigen
Name des Pool-Prozesspools
Prozessverwaltungsmethode des Prozessmanagers
Startzeit Wann wurde der Prozess gestartet
Start seit Wie viele Sekunden ist der Prozess bereits ausgeführt worden
Accepted Conn Wie viele Verbindungen hat der Pool insgesamt akzeptiert
Listen queue Die Anzahl der Verbindungen, die darauf warten, akzeptiert zu werden.
max listen queue Nach dem Start von fpm wird der Verlauf angezeigt. Die maximale Anzahl der Verbindungen, die auf die Annahme warten System „cat /proc/sys/net/core/somaxconn“, je nachdem, welcher Wert das Minimum ist
Leerlaufprozesse Die Anzahl der Leerlaufprozesse
Aktiver Prozess Die Anzahl der Arbeitsprozesse (mit Einschränkungen ist es die Gesamtzahl der untergeordneten Prozesse)
Gesamtprozesse Die Gesamtzahl der untergeordneten Prozesse
maximale aktive Prozesse Nach dem Start von fpm die maximale Anzahl gleichzeitiger Jobs im Verlauf Die Anzahl der Prozesse
maximal erreichte Kinder Wenn der Prozessverwaltungsmodus „dynamisch“ und „On-Demand“ ist , dieser Wert gibt an, wie oft der Master weitere untergeordnete Prozesse erstellt, wenn die untergeordneten Prozesse nicht ausreichen , Läuft, ...);
Startzeit, wann der untergeordnete Prozess gestartet wurde;
start seit wie vielen Sekunden der untergeordnete Prozess seit seinem Start ausgeführt wurde;
requests Wie viele Anfragen wurden vom aktuellen untergeordneten Prozess verarbeitet insgesamt;
Anforderungsdauer Die Anzahl der für die Anforderung aufgewendeten Nanosekunden;
Anforderungsmethode Anforderungsparameter (GET, POST, ...);
Inhaltslänge POST-Anfrage; der Anfrage;
Benutzer – der Benutzer (PHP_AUTH_USER) (oder '-', wenn nicht festgelegt);
Skript, welche PHP-Datei angefordert wird;
CPU der letzten Anfrage: die von der letzten Anfrage verbrauchten CPU-Ressourcen
Speicher der letzten Anfrage Der Spitzenspeicherverbrauch der letzten Anfrage
Wenn sich der Prozess im Leerlauf befindet, zeichnen diese Informationen die relevanten Daten der letzten Anfrage auf, andernfalls sind es die relevanten Daten der aktuellen Anfrage.
Backlog-Konfigurationsproblem
Ein FPM-Unterprozess kann nur eine Anfrage gleichzeitig verarbeiten. Wenn der Rückstand zu groß eingestellt ist und die von Clients wie Nginx initiierten Anforderungen vom FPM-Unterprozess nicht akzeptiert werden, wird Nginx verwendet Diese Verbindung wird direkt unterbrochen. Wenn FPM ausgelastet ist und dann zu „Akzeptieren“ geht, werden Sie feststellen, dass die Verbindung getrennt ist, sodass ein Fehler gemeldet wird. Wenn der Rückstand zu klein eingestellt ist und die Zugriffsmenge groß ist, sind alle FPM-Unterprozesse ausgelastet, der Rückstand ist voll und neue Verbindungen werden zu diesem Zeitpunkt abgelehnt direkt abgelehnt werden. Daher müssen die Backlog-Parameter entsprechend eingestellt werden.
Die meisten Parameter müssen nur durch die Systemstandards festgelegt werden. Wir müssen nur einige weitere wichtige Parametereinstellungen kennen. Wenn wir sie verwenden, können wir auf relevante Anweisungen zurückgreifen:
Videokurse programmieren
Das obige ist der detaillierte Inhalt vonphp-fpm.conf Konfigurationsdatei Chinesisch und wichtige Parameterbeschreibungen. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!