Heim > Backend-Entwicklung > PHP7 > Drei wenig bekannte FPM-Modi

Drei wenig bekannte FPM-Modi

醉折花枝作酒筹
Freigeben: 2023-02-18 07:28:01
nach vorne
2220 Leute haben es durchsucht

Wir verwenden oft PHP-FPM, aber nicht jeder weiß, dass FPM drei Modi hat. Heute wird Ihnen Xiaonian die drei Modi von FPM erklären.

Drei wenig bekannte FPM-Modi

; Choose how the process manager will control the number of child processes.
; Possible Values:
;   static  - a fixed number (pm.max_children) of child processes;
;   dynamic - the number of child processes are set dynamically based on the
;             following directives. With this process management, there will be
;             always at least 1 children.
;             pm.max_children      - the maximum number of children that can
;                                    be alive at the same time.
;             pm.start_servers     - the number of children created on startup.
;             pm.min_spare_servers - the minimum number of children in 'idle'
;                                    state (waiting to process). If the number
;                                    of 'idle' processes is less than this
;                                    number then some children will be created.
;             pm.max_spare_servers - the maximum number of children in 'idle'
;                                    state (waiting to process). If the number
;                                    of 'idle' processes is greater than this
;                                    number then some children will be killed.
;  ondemand - no children are created at startup. Children will be forked when
;             new requests will connect. The following parameter are used:
;             pm.max_children           - the maximum number of children that
;                                         can be alive at the same time.
;             pm.process_idle_timeout   - The number of seconds after which
;                                         an idle process will be killed.
; Note: This value is mandatory.
Nach dem Login kopieren

pm verfügt über drei Modi: statisch, dynamisch und auf Abruf. das heißt, die Anzahl der Worker-Prozesse ist festgelegt.

dynamisch

Dynamisches Prozessmanagement, initialisieren Sie beim Start von fpm zunächst eine bestimmte Anzahl von Workern gemäß pm.start_servers.

Wenn der Master während des Betriebs feststellt, dass die Anzahl der inaktiven Worker geringer ist als die Anzahl der konfigurierten pm.min_spare_servers (was darauf hinweist, dass zu viele Anfragen vorliegen und die Worker diese nicht bearbeiten können), wird der Worker-Prozess gegabelt, aber der Die Gesamtzahl der Arbeiter darf pm.max_children nicht überschreiten.

Wenn der Master feststellt, dass die Anzahl der inaktiven Arbeiter pm.max_spare_servers überschreitet (was darauf hinweist, dass zu viele inaktive Arbeiter vorhanden sind), werden einige Arbeiter getötet, um zu vermeiden, dass zu viele Ressourcen belegt werden. Der Master steuert die Anzahl der Arbeiter über diese 4 Werte .

ondemand

Diese Methode wird im Allgemeinen selten verwendet. Der Master-Prozess wird nicht benachrichtigt, um den Worker-Prozess zu forken. Die Gesamtzahl der Worker überschreitet nicht Die Verarbeitung ist abgeschlossen, der Arbeitsprozess wird nicht sofort beendet und dann beendet, wenn die Leerlaufzeit pm.process_idle_timeout überschreitet.

pm.max_children: Die Anzahl der PHP-FPM-Prozesse, die im statischen Modus gestartet wurden.

pm.start_servers: Die Anzahl der gestarteten PHP-FPM-Prozesse im dynamischen Modus.

pm.min_spare_servers: Mindestanzahl von PHP-FPM-Prozessen im dynamischen Modus.

pm.max_spare_servers: Die maximale Anzahl von PHP-FPM-Prozessen im dynamischen Modus.

FPM-Signalverarbeitung

php-fpm neu laden

php-fpm stop

kill SIGUSR1 php-fpm Neue Datei wiederverwenden, Komplettes Protokollschneiden

php-fpm reload

php-fpm stop

kill SIGUSR1 php-fpm 重新使用新的文件,完成日志切割

kill SIGUSR2 php-fpm 重新启动work进程,重新加载配置文件

Q1:启动php-fpm进程之后,kill php-fpm master进程号,还能继续服务吗? A: 不能 (所有php-fpm进程都被关闭)

Q2:启动php-fpm进程之后,kill -9 php-fpm master进程号,还能继续服务吗? A: 能(只kill了 master进程,work进程还在工作)

Q2:启动php-fpm进程之后,kill php-fpm work进程号,还能继续服务吗?A: 能(work进程被kill后,又新起一个work进程)

FPM的生命周期

php_module_startup()

fcgi_accept_request()

php_request_startup()

fmp_request_executing()

php_execute_script()

fpm_requset_end()

php_request_shutdown()

因为fpm是常驻进程,所以在php_request_shutdown()之后又会从fcgi_accept_request()kill SIGUSR2 php-fpm Starten Sie den Arbeitsprozess neu, laden Sie die Konfigurationsdatei neu

F1: Beenden Sie nach dem Starten des PHP-FPM-Prozesses die PHP-FPM-Masterprozessnummer und geben Sie Can zurück Der Dienst wird fortgesetzt? A: Nein (alle PHP-FPM-Prozesse werden heruntergefahren)

F2: Nachdem Sie den PHP-FPM-Prozess gestartet haben, töten Sie -9 PHP-FPM-Masterprozessnummer. Kann der Dienst fortgesetzt werden? A: Ja (nur der Master-Prozess wird beendet, der Arbeitsprozess funktioniert noch)

F2: Nachdem Sie den PHP-FPM-Prozess gestartet haben, beenden Sie die PHP-FPM-Arbeitsprozessnummer. Kann der Dienst fortgesetzt werden? A: Ja (nachdem der Arbeitsprozess beendet wurde, wird ein neuer Arbeitsprozess gestartet)🎜🎜Lebenszyklus von FPM🎜🎜🎜php_module_startup()🎜🎜fcgi_accept_request()🎜 🎜 php_request_startup()🎜🎜fmp_request_executing()🎜🎜php_execute_script()🎜🎜fpm_requset_end()🎜🎜php_request_shutdown()🎜🎜Da fpm ein residenter Prozess ist, beginnt die Schleife bei fcgi_accept_request() nach php_request_shutdown(). 🎜🎜🎜Empfohlenes Lernen: 🎜php-Video-Tutorial🎜🎜

Das obige ist der detaillierte Inhalt vonDrei wenig bekannte FPM-Modi. 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