php-fpm解讀-進程管理的三種模式

《我是程序媛》系列——php-fpm進程管理,感謝大表哥親情贊助時間,讀了php-fpm源碼寺谤。

php-fpm進程管理一共有三種模式:ondemand奏寨、static起意、dynamic,我們可以在同一個fpm的master配置三種模式病瞳,看下圖1杜恰。php-fpm的工作模式和nginx類似,都是一個master仍源,多個worker模型心褐。每個worker都在accept本pool內(nèi)的監(jiān)聽套接字(linux已不存在驚群現(xiàn)象)。

圖1


ondemand

在php-fpm啟動的時候笼踩,不會給這個pool啟動任何一個worker逗爹,是按需啟動,當有連接過來才會啟動嚎于。

配置文件(我的配置文件地址為:/usr/local/php/etc/php-fpm.conf)


當前pool的名字為test

原理


ondemand原理圖

1. 從上圖可以看出掘而,新建worker的觸發(fā)條件是連接的到來,而不是實際的請求(例如于购,只進行連接比如telnet袍睡,不發(fā)請求數(shù)據(jù)也會新建worker)

2. worker的數(shù)量受限于pm.max_children配置,同時受限全局配置process.max(準確的說肋僧,三種模式都受限于全局配置)

3.1秒定時器作用

找到空閑worker斑胜,如果空閑時間超過pm.process_idle_timeout大小,關(guān)閉嫌吠。這個機制可能會關(guān)閉所有的worker止潘。

配置項要求

1. pm.max_children> 0

2. pm.process_idle_timeout> 0,如果不設(shè)置辫诅,默認10s

優(yōu)缺點

優(yōu)點:按流量需求創(chuàng)建凭戴,不浪費系統(tǒng)資源(在硬件如此便宜的時代,這個優(yōu)點略顯雞肋)

缺點:由于php-fpm是短連接的炕矮,所以每次請求都會先建立連接么夫,建立連接的過程必然會觸發(fā)上圖的執(zhí)行步驟者冤,所以,在大流量的系統(tǒng)上master進程會變得繁忙档痪,占用系統(tǒng)cpu資源涉枫,不適合大流量環(huán)境的部署


dynamic

在php-fpm啟動時,會初始啟動一些worker钞它,在運行過程中動態(tài)調(diào)整worker數(shù)量拜银,worker的數(shù)量受限于pm.max_children配置,同時受限全局配置process.max

當前pool的名字為test

原理

dynamic原理圖

1. 1秒定時器作用

檢查空閑worker數(shù)量遭垛,按照一定策略動態(tài)調(diào)整worker數(shù)量尼桶,增加或減少。增加時锯仪,worker最大數(shù)量<=max_children· <=全局process.max泵督;減少時,只有idle >pm.max_spare_servers時才會關(guān)閉一個空閑worker庶喜。

idle > pm.max_spare_servers小腊,關(guān)閉啟動時間最長的一個worker,結(jié)束本次處理

idle >= pm.max_children久窟,打印WARNING日志秩冈,結(jié)束本次處理

idle < pm.max_children,計算一個num值斥扛,然后啟動num個worker入问,結(jié)束本次處理

配置項要求

1. pm.min_spare_servers/pm.max_spare_servers有效范圍(0,pm.max_children]

2. pm.max_children> 0

3. pm.min_spare_servers<=pm.max_spare_servers

4. pm.start_servers有效范圍[pm.min_spare_servers,pm.max_spare_servers]如果沒有配置,默認pm.min_spare_servers + (pm.max_spare_servers - pm.min_spare_servers) / 2

優(yōu)缺點

優(yōu)點:動態(tài)擴容稀颁,不浪費系統(tǒng)資源芬失,master進程設(shè)置的1秒定時器對系統(tǒng)的影響忽略不計;

缺點:如果所有worker都在工作匾灶,新的請求到來只能等待master在1秒定時器內(nèi)再新建一個worker棱烂,這時可能最長等待1s;


static

php-fpm啟動采用固定大小數(shù)量的worker阶女,在運行期間也不會擴容颊糜,雖然也有1秒的定時器,僅限于統(tǒng)計一些狀態(tài)信息张肾,例如空閑worker個數(shù)芭析,活動worker個數(shù),網(wǎng)絡(luò)連接隊列長度等信息吞瞪。


當前pool的名字為test

原理

配置項要求

1、pm.max_children> 0 必須配置驾孔,且只有這一個參數(shù)生效

優(yōu)缺點

如果配置成static芍秆,只需要考慮max_children的數(shù)量惯疙,數(shù)量取決于cpu的個數(shù)和應(yīng)用的響應(yīng)時間,我司配置的是50妖啥。

我司不考慮動態(tài)的增加減少那么十幾個或者幾十個worker霉颠,我們的內(nèi)存沒有緊張到這個程度,所以荆虱,我們一步到位蒿偎,把worker數(shù)配置到支持最大流量,(哈哈怀读,50也是隨便定的诉位,足矣足矣呢)


最后我們再介紹下worker的工作流程

此圖出自大表哥@要要

fastcgi與php-fpm的關(guān)系一句話解讀:fastcgi只是通信應(yīng)用協(xié)議,php-fpm就是實現(xiàn)了fastcig協(xié)議菜枷,并嵌入了一個 PHP 解釋器苍糠。


大表哥說fpm必須讓大象背上,設(shè)計能力有限啤誊,湊合看吧
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末岳瞭,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子蚊锹,更是在濱河造成了極大的恐慌瞳筏,老刑警劉巖,帶你破解...
    沈念sama閱讀 207,248評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件牡昆,死亡現(xiàn)場離奇詭異姚炕,居然都是意外死亡,警方通過查閱死者的電腦和手機迁杨,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,681評論 2 381
  • 文/潘曉璐 我一進店門钻心,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人铅协,你說我怎么就攤上這事捷沸。” “怎么了狐史?”我有些...
    開封第一講書人閱讀 153,443評論 0 344
  • 文/不壞的土叔 我叫張陵痒给,是天一觀的道長。 經(jīng)常有香客問我骏全,道長苍柏,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 55,475評論 1 279
  • 正文 為了忘掉前任姜贡,我火速辦了婚禮试吁,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己熄捍,他們只是感情好烛恤,可當我...
    茶點故事閱讀 64,458評論 5 374
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著余耽,像睡著了一般缚柏。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上碟贾,一...
    開封第一講書人閱讀 49,185評論 1 284
  • 那天币喧,我揣著相機與錄音,去河邊找鬼袱耽。 笑死杀餐,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的扛邑。 我是一名探鬼主播怜浅,決...
    沈念sama閱讀 38,451評論 3 401
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼蔬崩!你這毒婦竟也來了恶座?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,112評論 0 261
  • 序言:老撾萬榮一對情侶失蹤沥阳,失蹤者是張志新(化名)和其女友劉穎跨琳,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體桐罕,經(jīng)...
    沈念sama閱讀 43,609評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡脉让,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,083評論 2 325
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了功炮。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片溅潜。...
    茶點故事閱讀 38,163評論 1 334
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖薪伏,靈堂內(nèi)的尸體忽然破棺而出滚澜,到底是詐尸還是另有隱情,我是刑警寧澤嫁怀,帶...
    沈念sama閱讀 33,803評論 4 323
  • 正文 年R本政府宣布设捐,位于F島的核電站,受9級特大地震影響塘淑,放射性物質(zhì)發(fā)生泄漏萝招。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 39,357評論 3 307
  • 文/蒙蒙 一存捺、第九天 我趴在偏房一處隱蔽的房頂上張望槐沼。 院中可真熱鬧,春花似錦、人聲如沸母赵。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,357評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽凹嘲。三九已至,卻和暖如春构韵,著一層夾襖步出監(jiān)牢的瞬間周蹭,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,590評論 1 261
  • 我被黑心中介騙來泰國打工疲恢, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留凶朗,地道東北人。 一個月前我還...
    沈念sama閱讀 45,636評論 2 355
  • 正文 我出身青樓显拳,卻偏偏與公主長得像棚愤,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子杂数,可洞房花燭夜當晚...
    茶點故事閱讀 42,925評論 2 344

推薦閱讀更多精彩內(nèi)容

  • 原文github地址 1.PHP概述 1.1 PHP的歷史發(fā)展 1995年由Lerdorf創(chuàng)建PHP宛畦,高級腳本語言...
    10xjzheng閱讀 1,490評論 0 2
  • 在實際的開發(fā)和應(yīng)用中偶發(fā)的502,504讓人頭痛揍移,下面轉(zhuǎn)發(fā)一個寫的比較全面的次和。 PHP-fpm PHP-FPM是一...
    daos閱讀 2,337評論 2 18
  • 1. Nginx的模塊與工作原理 Nginx由內(nèi)核和模塊組成,其中那伐,內(nèi)核的設(shè)計非常微小和簡潔踏施,完成的工作也非常簡單...
    rosekissyou閱讀 10,197評論 5 124
  • LAMP簡介 LAMP(Linux- Apache-MySQL-PHP)網(wǎng)站架構(gòu)是目前國際流行的Web框架诉探,該框架...
    mx3閱讀 1,063評論 1 9
  • 1.LAMP介紹 ? LAM(M)P:L: linuxA: apache (httpd)M: mysql, mar...
    尛尛大尹閱讀 1,038評論 0 1