溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

PHP-FPM進(jìn)程的管理方式

發(fā)布時(shí)間:2021-09-03 19:33:19 來源:億速云 閱讀:136 作者:chen 欄目:編程語言

這篇文章主要講解了“PHP-FPM進(jìn)程的管理方式”,文中的講解內(nèi)容簡(jiǎn)單清晰,易于學(xué)習(xí)與理解,下面請(qǐng)大家跟著小編的思路慢慢深入,一起來研究和學(xué)習(xí)“PHP-FPM進(jìn)程的管理方式”吧!

本文將介紹以下內(nèi)容:

  • PHP-FPM進(jìn)程管理方式介紹

  • PHP-FPM如何與Nginx等Web服務(wù)器進(jìn)行通信

先說一下PHP-FPM的進(jìn)程模型,PHP-FPM采用的是Master/Worker進(jìn)程模型。當(dāng)PHP-FPM啟動(dòng)時(shí),會(huì)讀取配置文件,然后創(chuàng)建一個(gè)Master進(jìn)程和若干個(gè)Worker進(jìn)程(具體是幾個(gè)Worker進(jìn)程是由php-fpm.conf中配置的個(gè)數(shù)決定)。Worker進(jìn)程是由Master進(jìn)程fork出來的。

Master進(jìn)程和Worker進(jìn)程的作用:

  • Master進(jìn)程:負(fù)責(zé)管理Worker進(jìn)程、監(jiān)聽端口

  • Worker進(jìn)程:處理業(yè)務(wù)邏輯

PHP-FPM進(jìn)程的管理方式

PHP-FPM進(jìn)程管理方式有動(dòng)態(tài)(Dynamic)、靜態(tài)(Static)、按需(Ondemand)三種,下面將一一介紹。

動(dòng)態(tài)(Dynamic) 在這種方式下,PHP-FPM啟動(dòng)時(shí)會(huì)創(chuàng)建一定數(shù)量的Worker進(jìn)程。當(dāng)請(qǐng)求數(shù)逐漸增大時(shí),會(huì)動(dòng)態(tài)增加Worker進(jìn)程的數(shù)量;當(dāng)請(qǐng)求數(shù)降下來時(shí),會(huì)銷毀剛才動(dòng)態(tài)創(chuàng)建出來的Worker進(jìn)程。在這種方式下,如果配置的最大進(jìn)程數(shù)過大,當(dāng)請(qǐng)求量增加時(shí)會(huì)出現(xiàn)大量Worker進(jìn)程,進(jìn)程之間會(huì)頻繁切換,浪費(fèi)大量CPU資源。

下面的三個(gè)參數(shù)可以配置Worker進(jìn)程的數(shù)量:

  • pm.start_servers:動(dòng)態(tài)方式下的起始php-fpm進(jìn)程數(shù)量。

  • pm.min_spare_servers:動(dòng)態(tài)方式下的最小php-fpm進(jìn)程數(shù)量。

  • pm.max_spare_servers:動(dòng)態(tài)方式下的最大php-fpm進(jìn)程數(shù)量。

靜態(tài)(Static) 這種方式下,PHP-FPM啟動(dòng)時(shí)會(huì)創(chuàng)建配置文件中指定數(shù)量的Worker進(jìn)程,不會(huì)根據(jù)請(qǐng)求數(shù)量的多少而增加減少。因?yàn)镻HP-FPM開啟的每個(gè)Worker進(jìn)程同一時(shí)間只能處理一個(gè)請(qǐng)求,所以在這種方式下當(dāng)請(qǐng)求增大的時(shí)候,將會(huì)出現(xiàn)等待的情形。

下面的參數(shù)可以配置Worker進(jìn)程的數(shù)量: pm.max_children:靜態(tài)方式下開啟的php-fpm進(jìn)程數(shù)量。

按需(Ondemand) 在這種方式下,PHP-FPM啟動(dòng)時(shí),不會(huì)創(chuàng)建Worker進(jìn)程,當(dāng)請(qǐng)求到達(dá)的時(shí)候Master進(jìn)程才會(huì)fork出子進(jìn)程。在這種模式下,如果請(qǐng)求量比較大,Master進(jìn)程會(huì)非常繁忙,會(huì)占用大量CPU時(shí)間。所以這種模式不適合大流量的環(huán)境。

在Nginx+PHP-FPM的架構(gòu)中,Web服務(wù)器是如何與PHP-FPM通信的呢?

PHP-FPM進(jìn)程的管理方式

當(dāng)用戶請(qǐng)求一個(gè)http地址時(shí),Nginx會(huì)收到請(qǐng)求,然后將請(qǐng)求轉(zhuǎn)發(fā)給PHP-FPM,PHP-FPM收到請(qǐng)求后會(huì)將請(qǐng)求轉(zhuǎn)發(fā)給一個(gè)空閑的Worker進(jìn)程。當(dāng)Worker進(jìn)程處理完后會(huì)將結(jié)果返回給Nginx,Ngixn再講內(nèi)容返回給用戶。

感謝各位的閱讀,以上就是“PHP-FPM進(jìn)程的管理方式”的內(nèi)容了,經(jīng)過本文的學(xué)習(xí)后,相信大家對(duì)PHP-FPM進(jìn)程的管理方式這一問題有了更深刻的體會(huì),具體使用情況還需要大家實(shí)踐驗(yàn)證。這里是億速云,小編將為大家推送更多相關(guān)知識(shí)點(diǎn)的文章,歡迎關(guān)注!

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

php
AI