fpm-fastcgi 進(jìn)程管理器


1 FPM(FastCGI 進(jìn)程管理器)用于替換 PHP FastCGI 的大部分附加功能,對于高負(fù)載網(wǎng)站是非常有用的纵刘。


它的功能包括:

● 支持平滑停止/啟動的高級進(jìn)程管理功能穴翩;

● 可以工作于不同的 uid/gid/chroot 環(huán)境下犬第,并監(jiān)聽不同的端口和使用不同的 php.ini 配置文件(可取代 safe_mode 的設(shè)置);

● stdout 和 stderr 日志記錄;

● 在發(fā)生意外情況的時(shí)候能夠重新啟動并緩存被破壞的 opcode;

● 文件上傳優(yōu)化支持;

● "慢日志" - 記錄腳本(不僅記錄文件名芒帕,還記錄 PHP backtrace 信息歉嗓,可以使用 ptrace或者類似工具讀取和分析遠(yuǎn)程進(jìn)程的運(yùn)行數(shù)據(jù))運(yùn)行所導(dǎo)致的異常緩慢;

● fastcgi_finish_request() - 特殊功能:用于在請求完成和刷新數(shù)據(jù)后,繼續(xù)在后臺執(zhí)行耗時(shí)的工作(錄入視頻轉(zhuǎn)換副签、統(tǒng)計(jì)處理等)遥椿;

● 動態(tài)/靜態(tài)子進(jìn)程產(chǎn)生;

● 基本 SAPI 運(yùn)行狀態(tài)信息(類似Apache的 mod_status)淆储;

● 基于 php.ini 的配置文件冠场。


2 從源代碼編譯


編譯 PHP 時(shí)需要 --enable-fpm 配置選項(xiàng)來激活 FPM 支持。

以下為 FPM 編譯的具體配置參數(shù)(全部為可選參數(shù)):

● --with-fpm-user - 設(shè)置 FPM 運(yùn)行的用戶身份(默認(rèn) - nobody)

● --with-fpm-group - 設(shè)置 FPM 運(yùn)行時(shí)的用戶組(默認(rèn) - nobody)

● --with-fpm-systemd - 啟用 systemd 集成 (默認(rèn) - no)

● --with-fpm-acl - 使用POSIX 訪問控制列表 (默認(rèn) - no) 5.6.5版本起有效


3 配置


FPM 配置文件為 php-fpm.conf本砰,其語法類似 php.ini 碴裙。

1 php-fpm.conf 全局配置段


pid string

PID文件的位置。默認(rèn)為空点额。

error_log string

錯(cuò)誤日志的位置舔株。默認(rèn):安裝路徑 #INSTALL_PREFIX#/log/php-fpm.log。

log_level string

錯(cuò)誤級別还棱≡卮龋可用級別為:alert(必須立即處理),error(錯(cuò)誤情況)珍手,warning(警告情況)办铡,notice(一般重要信息),debug(調(diào)試信息)琳要。默認(rèn):notice寡具。

emergency_restart_threshold int

如果子進(jìn)程在 emergency_restart_interval 設(shè)定的時(shí)間內(nèi)收到該參數(shù)設(shè)定次數(shù)的 SIGSEGV 或者 SIGBUS退出信息號,則FPM會重新啟動稚补。0 表示“關(guān)閉該功能”童叠。默認(rèn)值:0(關(guān)閉)。

emergency_restart_interval mixed

emergency_restart_interval 用于設(shè)定平滑重啟的間隔時(shí)間课幕。這么做有助于解決加速器中共享內(nèi)存的使用問題厦坛∥蹇澹可用單位:s(秒),m(分)杜秸,h(小時(shí))或者 d(天)拼余。默認(rèn)單位:s(秒)。默認(rèn)值:0(關(guān)閉)亩歹。

process_control_timeout mixed

設(shè)置子進(jìn)程接受主進(jìn)程復(fù)用信號的超時(shí)時(shí)間》渤鳎可用單位:s(秒)小作,m(分),h(小時(shí))或者 d(天)稼钩。默認(rèn)單位:s(秒)顾稀。默認(rèn)值:0(關(guān)閉)。

daemonize boolean

設(shè)置 FPM 在后臺運(yùn)行坝撑。設(shè)置“no”將 FPM 保持在前臺運(yùn)行用于調(diào)試静秆。默認(rèn)值:yes。

2 運(yùn)行配置區(qū)段


在FPM中巡李,可以使用不同的設(shè)置來運(yùn)行多個(gè)進(jìn)程池抚笔。 這些設(shè)置可以針對每個(gè)進(jìn)程池單獨(dú)設(shè)置。

listen string

設(shè)置接受 FastCGI 請求的地址侨拦∈獬龋可用格式為:'ip:port','port'狱从,'/path/to/unix/socket'膨蛮。每個(gè)進(jìn)程池都需要設(shè)置。

listen.backlog int

設(shè)置 listen(2) 的半連接隊(duì)列長度季研〕ǜ穑“-1”表示無限制。默認(rèn)值:-1与涡。

listen.allowed_clients string

設(shè)置允許連接到 FastCGI 的服務(wù)器 IPV4 地址惹谐。等同于 PHP FastCGI (5.2.2+) 中的 FCGI_WEB_SERVER_ADDRS 環(huán)境變量。僅對 TCP 監(jiān)聽起作用递沪。每個(gè)地址是用逗號分隔豺鼻,如果沒有設(shè)置或者為空,則允許任何服務(wù)器請求連接款慨。默認(rèn)值:any儒飒。

listen.owner string

如果使用,表示設(shè)置 Unix 套接字的權(quán)限檩奠。在Linux中桩了,讀寫權(quán)限必須設(shè)置附帽,以便用于 WEB 服務(wù)器連接。在很多 BSD 派生的系統(tǒng)中可以忽略權(quán)限允許自由連接井誉。默認(rèn)值:運(yùn)行所使用的用戶和組蕉扮,權(quán)限為 0666。

listen.group string

listen.mode string

user string

FPM 進(jìn)程運(yùn)行的Unix用戶颗圣。必須設(shè)置喳钟。

group string

FPM 進(jìn)程運(yùn)行的 Unix 用戶組。如果沒有設(shè)置在岂,則默認(rèn)用戶的組被使用奔则。

pm string

設(shè)置進(jìn)程管理器如何管理子進(jìn)程”挝纾可用值:static易茬,ondemand,dynamic及老。必須設(shè)置抽莱。

static - 子進(jìn)程的數(shù)量是固定的(pm.max_children)。

ondemand - 進(jìn)程在有需求時(shí)才產(chǎn)生(當(dāng)請求時(shí)骄恶,與 dynamic 相反食铐,pm.start_servers 在服務(wù)啟動時(shí)即啟動。

dynamic - 子進(jìn)程的數(shù)量在下面配置的基礎(chǔ)上動態(tài)設(shè)置:pm.max_children僧鲁,pm.start_servers璃岳,pm.min_spare_servers,pm.max_spare_servers悔捶。

pm.max_children int

pm 設(shè)置為 static 時(shí)表示創(chuàng)建的子進(jìn)程的數(shù)量铃慷,pm 設(shè)置為 dynamic 時(shí)表示最大可創(chuàng)建的子進(jìn)程的數(shù)量。必須設(shè)置蜕该。

該選項(xiàng)設(shè)置可以同時(shí)提供服務(wù)的請求數(shù)限制犁柜。類似 Apache 的 mpm_prefork 中 MaxClients 的設(shè)置和 普通PHP FastCGI中的 PHP_FCGI_CHILDREN 環(huán)境變量。

pm.start_servers in

設(shè)置啟動時(shí)創(chuàng)建的子進(jìn)程數(shù)目堂淡。僅在 pm 設(shè)置為 dynamic 時(shí)使用馋缅。默認(rèn)值:min_spare_servers + (max_spare_servers - min_spare_servers) / 2。

pm.min_spare_servers int

設(shè)置空閑服務(wù)進(jìn)程的最低數(shù)目绢淀。僅在 pm 設(shè)置為 dynamic 時(shí)使用萤悴。必須設(shè)置。

pm.max_spare_servers int

設(shè)置空閑服務(wù)進(jìn)程的最大數(shù)目皆的。僅在 pm 設(shè)置為 dynamic 時(shí)使用覆履。必須設(shè)置。

pm.max_requests int

設(shè)置每個(gè)子進(jìn)程重生之前服務(wù)的請求數(shù)。對于可能存在內(nèi)存泄漏的第三方模塊來說是非常有用的硝全。如果設(shè)置為 '0' 則一直接受請求栖雾,等同于 PHP_FCGI_MAX_REQUESTS 環(huán)境變量。默認(rèn)值:0伟众。

pm.status_path string

FPM 狀態(tài)頁面的網(wǎng)址析藕。如果沒有設(shè)置,則無法訪問狀態(tài)頁面凳厢,默認(rèn)值:無账胧。

ping.path string

FPM 監(jiān)控頁面的 ping 網(wǎng)址。如果沒有設(shè)置先紫,則無法訪問 ping 頁面找爱。該頁面用于外部檢測 FPM 是否存活并且可以響應(yīng)請求。請注意必須以斜線開頭(/)泡孩。

ping.response string

用于定義 ping 請求的返回響應(yīng)。返回為 HTTP 200 的 text/plain 格式文本寺谤。默認(rèn)值:pong仑鸥。

request_terminate_timeout mixed

設(shè)置單個(gè)請求的超時(shí)中止時(shí)間。該選項(xiàng)可能會對 php.ini 設(shè)置中的 'max_execution_time' 因?yàn)槟承┨厥庠驔]有中止運(yùn)行的腳本有用变屁。設(shè)置為 '0' 表示 'Off'眼俊。可用單位:s(秒)粟关,m(分)疮胖,h(小時(shí))或者 d(天)。默認(rèn)單位:s(秒)闷板。默認(rèn)值:0(關(guān)閉)澎灸。

request_slowlog_timeout mixed

當(dāng)一個(gè)請求該設(shè)置的超時(shí)時(shí)間后,就會將對應(yīng)的 PHP 調(diào)用堆棧信息完整寫入到慢日志中遮晚。設(shè)置為 '0' 表示 'Off'性昭。可用單位:s(秒)县遣,m(分)糜颠,h(小時(shí))或者 d(天)。默認(rèn)單位:s(秒)萧求。默認(rèn)值:0(關(guān)閉)其兴。

slowlog string

慢請求的記錄日志。默認(rèn)值:#INSTALL_PREFIX#/log/php-fpm.log.slow夸政。

rlimit_files int

設(shè)置文件打開描述符的 rlimit 限制元旬。默認(rèn)值:系統(tǒng)定義值。

rlimit_core int

設(shè)置核心 rlimit 最大限制值》啵可用值:'unlimited'箕速,0 或者正整數(shù)。默認(rèn)值:系統(tǒng)定義值朋譬。

chroot string

啟動時(shí)的 Chroot 目錄盐茎。所定義的目錄需要是絕對路徑。如果沒有設(shè)置徙赢,則 chroot 不被使用字柠。

chdir string

設(shè)置啟動目錄,啟動時(shí)會自動 Chdir 到該目錄狡赐。所定義的目錄需要是絕對路徑窑业。默認(rèn)值:當(dāng)前目錄,或者根目錄(chroot時(shí))枕屉。

catch_workers_output boolean

重定向運(yùn)行過程中的 stdout 和 stderr 到主要的錯(cuò)誤日志文件中常柄。如果沒有設(shè)置,stdout 和 stderr 將會根據(jù) FastCGI 的規(guī)則被重定向到 /dev/null搀擂。默認(rèn)值:無西潘。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市哨颂,隨后出現(xiàn)的幾起案子喷市,更是在濱河造成了極大的恐慌,老刑警劉巖威恼,帶你破解...
    沈念sama閱讀 211,265評論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件品姓,死亡現(xiàn)場離奇詭異,居然都是意外死亡箫措,警方通過查閱死者的電腦和手機(jī)腹备,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,078評論 2 385
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來斤蔓,“玉大人馏谨,你說我怎么就攤上這事「矫裕” “怎么了惧互?”我有些...
    開封第一講書人閱讀 156,852評論 0 347
  • 文/不壞的土叔 我叫張陵,是天一觀的道長喇伯。 經(jīng)常有香客問我喊儡,道長,這世上最難降的妖魔是什么稻据? 我笑而不...
    開封第一講書人閱讀 56,408評論 1 283
  • 正文 為了忘掉前任艾猜,我火速辦了婚禮买喧,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘匆赃。我一直安慰自己淤毛,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,445評論 5 384
  • 文/花漫 我一把揭開白布算柳。 她就那樣靜靜地躺著低淡,像睡著了一般。 火紅的嫁衣襯著肌膚如雪瞬项。 梳的紋絲不亂的頭發(fā)上蔗蹋,一...
    開封第一講書人閱讀 49,772評論 1 290
  • 那天,我揣著相機(jī)與錄音囱淋,去河邊找鬼猪杭。 笑死,一個(gè)胖子當(dāng)著我的面吹牛妥衣,可吹牛的內(nèi)容都是我干的皂吮。 我是一名探鬼主播,決...
    沈念sama閱讀 38,921評論 3 406
  • 文/蒼蘭香墨 我猛地睜開眼税手,長吁一口氣:“原來是場噩夢啊……” “哼蜂筹!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起冈止,我...
    開封第一講書人閱讀 37,688評論 0 266
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎候齿,沒想到半個(gè)月后熙暴,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,130評論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡慌盯,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,467評論 2 325
  • 正文 我和宋清朗相戀三年周霉,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片亚皂。...
    茶點(diǎn)故事閱讀 38,617評論 1 340
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡俱箱,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出灭必,到底是詐尸還是另有隱情狞谱,我是刑警寧澤,帶...
    沈念sama閱讀 34,276評論 4 329
  • 正文 年R本政府宣布禁漓,位于F島的核電站跟衅,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏播歼。R本人自食惡果不足惜伶跷,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,882評論 3 312
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧叭莫,春花似錦蹈集、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,740評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至抵皱,卻和暖如春善榛,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背呻畸。 一陣腳步聲響...
    開封第一講書人閱讀 31,967評論 1 265
  • 我被黑心中介騙來泰國打工移盆, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人伤为。 一個(gè)月前我還...
    沈念sama閱讀 46,315評論 2 360
  • 正文 我出身青樓咒循,卻偏偏與公主長得像,于是被迫代替她去往敵國和親绞愚。 傳聞我的和親對象是個(gè)殘疾皇子叙甸,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,486評論 2 348

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

  • 在實(shí)際的開發(fā)和應(yīng)用中偶發(fā)的502,504讓人頭痛位衩,下面轉(zhuǎn)發(fā)一個(gè)寫的比較全面的裆蒸。 PHP-fpm PHP-FPM是一...
    daos閱讀 2,341評論 2 18
  • Nginx簡介 解決基于進(jìn)程模型產(chǎn)生的C10K問題,請求時(shí)即使無狀態(tài)連接如web服務(wù)都無法達(dá)到并發(fā)響應(yīng)量級一萬的現(xiàn)...
    魏鎮(zhèn)坪閱讀 1,993評論 0 9
  • 一、MemCache簡介 session MemCache是一個(gè)自由糖驴、源碼開放僚祷、高性能、分布式的分布式內(nèi)存對象緩存...
    李偉銘MIng閱讀 3,789評論 2 13
  • 更改ip和dnsVi /etc/sysconfig/network-scripts/ifcfg-eth0vi /...
    Xwei_閱讀 1,804評論 0 3
  • 《我是程序媛》系列——php-fpm進(jìn)程管理贮缕,感謝大表哥親情贊助時(shí)間辙谜,讀了php-fpm源碼。 php-fpm進(jìn)程...
    程序媛大麗閱讀 13,738評論 7 35