PHP-FPM 配置說(shuō)明

FPM工作流程

fpm 全名是FastCGI進(jìn)程管理器窥摄,可以參考關(guān)于FastCGI的說(shuō)明:CGI拌滋、FastCGI、PHP-CGI和PHP-FPM 概念區(qū)分
fpm啟動(dòng)后會(huì)先讀php.ini躺彬,然后再讀取相應(yīng)的conf配置文件簿姨,conf配置可以覆蓋php.ini的配置。啟動(dòng)fpm之后喇嘱,會(huì)創(chuàng)建一個(gè)master進(jìn)程茉贡,監(jiān)聽(tīng)9000端口(可配置),master進(jìn)程又會(huì)根據(jù)fpm.conf/www.conf去創(chuàng)建若干子進(jìn)程者铜,子進(jìn)程用于處理實(shí)際的業(yè)務(wù)腔丧。當(dāng)有客戶(hù)端(比如nginx)來(lái)連接9000端口時(shí)放椰,空閑子進(jìn)程會(huì)自己去accept,如果子進(jìn)程全部處于忙碌狀態(tài)愉粤,新進(jìn)的待accept的連接會(huì)被master放進(jìn)隊(duì)列里砾医,等待fpm子進(jìn)程空閑;這個(gè)存放待accept的半連接的隊(duì)列有多長(zhǎng)衣厘,由 listen.backlog 配置如蚜。

php-fpm的啟動(dòng)參數(shù)

#測(cè)試php-fpm配置
/usr/local/php/sbin/php-fpm -t
/usr/local/php/sbin/php-fpm -c /usr/local/php/etc/php.ini -y /usr/local/php/etc/php-fpm.conf -t

#啟動(dòng)php-fpm
/usr/local/php/sbin/php-fpm
/usr/local/php/sbin/php-fpm -c /usr/local/php/etc/php.ini -y /usr/local/php/etc/php-fpm.conf

#關(guān)閉php-fpm
kill -INT `cat /usr/local/php/var/run/php-fpm.pid`

#重啟php-fpm
kill -USR2 `cat /usr/local/php/var/run/php-fpm.pid`

php-fpm.conf重要參數(shù)詳解

pid = run/php-fpm.pid
#pid設(shè)置,默認(rèn)在安裝目錄中的var/run/php-fpm.pid影暴,建議開(kāi)啟

error_log = log/php-fpm.log
#錯(cuò)誤日志错邦,默認(rèn)在安裝目錄中的var/log/php-fpm.log 如果設(shè)置為syslog难咕,log就會(huì)發(fā)送給syslogd服務(wù)而不會(huì)寫(xiě)進(jìn)文件里锦积。

syslog.facility = daemon 
# 把日志寫(xiě)進(jìn)系統(tǒng)log,linux還不夠熟悉虱疏,暫時(shí)不用理會(huì)妆兑。

syslog.ident = php-fpm 
#系統(tǒng)日志標(biāo)示魂拦,如果跑了多個(gè)fpm進(jìn)程,需要用這個(gè)來(lái)區(qū)分日志是誰(shuí)的搁嗓。

log_level = notice
#錯(cuò)誤級(jí)別. 可用級(jí)別為: alert(必須立即處理), error(錯(cuò)誤情況), warning(警告情況), notice(一般重要信息), debug(調(diào)試信息). 默認(rèn): notice.

emergency_restart_threshold = 60
emergency_restart_interval = 60s
#表示在emergency_restart_interval所設(shè)值內(nèi)出現(xiàn)SIGSEGV或者SIGBUS錯(cuò)誤的php-cgi進(jìn)程數(shù)如果超過(guò) emergency_restart_threshold個(gè)芯勘,php-fpm就會(huì)優(yōu)雅重啟。這兩個(gè)選項(xiàng)一般保持默認(rèn)值谱姓。

process_control_timeout = 0
#設(shè)置子進(jìn)程接受主進(jìn)程復(fù)用信號(hào)的超時(shí)時(shí)間. 可用單位: s(秒), m(分), h(小時(shí)), 或者 d(天) 默認(rèn)單位: s(秒). 默認(rèn)值: 0.

daemonize = yes
#后臺(tái)執(zhí)行fpm,默認(rèn)值為yes借尿,如果為了調(diào)試可以改為no刨晴。在FPM中屉来,可以使用不同的設(shè)置來(lái)運(yùn)行多個(gè)進(jìn)程池。 這些設(shè)置可以針對(duì)每個(gè)進(jìn)程池單獨(dú)設(shè)置狈癞。

listen = 127.0.0.1:9000
#fpm監(jiān)聽(tīng)端口茄靠,即nginx中php處理的地址,一般默認(rèn)值即可蝶桶】可用格式為: 'ip:port', 'port', '/path/to/unix/socket'. 每個(gè)進(jìn)程池都需要設(shè)置.

listen.backlog = -1
#未accept處理的socket隊(duì)列大小,-1 on FreeBSD and OpenBSD真竖,其他平臺(tái)默認(rèn)65535脐雪,高并發(fā)時(shí)重要,合理設(shè)置會(huì)及時(shí)處理排隊(duì)的請(qǐng)求恢共;太大會(huì)積壓太多战秋,處理完后nginx在前面都等超時(shí)斷開(kāi)這個(gè)和fpm的socket連接了,就杯具了讨韭。不要用-1脂信,建議1024以上癣蟋,最好是2的冪值。
# 一個(gè)池共用一個(gè)backlog隊(duì)列狰闪,所有的池進(jìn)程都去這個(gè)隊(duì)列里accept連接疯搅。
# 最大數(shù)量受限于系統(tǒng)配置 cat /proc/sys/net/core/somaxconn,系統(tǒng)配置修改:vim /etc/sysctl.conf埋泵,增加 net.core.somaxconn = 2000 則最大為2000幔欧,然后php最大的backlog可以到2000。

listen.allowed_clients = 127.0.0.1
#允許訪(fǎng)問(wèn)FastCGI進(jìn)程的IP丽声,設(shè)置any為不限制IP琐馆,如果要設(shè)置其他主機(jī)的nginx也能訪(fǎng)問(wèn)這臺(tái)FPM進(jìn)程,listen處要設(shè)置成本地可被訪(fǎng)問(wèn)的IP恒序。默認(rèn)值是any瘦麸。每個(gè)地址是用逗號(hào)分隔. 如果沒(méi)有設(shè)置或者為空,則允許任何服務(wù)器請(qǐng)求連接

listen.owner = www
listen.group = www
listen.mode = 0666
#unix socket設(shè)置選項(xiàng)歧胁,如果使用tcp方式訪(fǎng)問(wèn)滋饲,這里注釋即可。

user = www
group = www
#啟動(dòng)進(jìn)程的帳戶(hù)和組

pm = dynamic 
#對(duì)于專(zhuān)用服務(wù)器喊巍,pm可以設(shè)置為static屠缭。
#如何控制子進(jìn)程,選項(xiàng)有static和dynamic崭参。如果選擇static呵曹,則由pm.max_children指定固定的子進(jìn)程數(shù)。如果選擇dynamic何暮,則由下開(kāi)參數(shù)決定:
pm.max_children 
#奄喂,子進(jìn)程最大數(shù)
pm.start_servers 
#,啟動(dòng)時(shí)的進(jìn)程數(shù)
pm.min_spare_servers 
#海洼,保證空閑進(jìn)程數(shù)最小值跨新,如果空閑進(jìn)程小于此值,則創(chuàng)建新的子進(jìn)程
pm.max_spare_servers 
#坏逢,保證空閑進(jìn)程數(shù)最大值域帐,如果空閑進(jìn)程大于此值,此進(jìn)行清理

pm.max_requests = 1000
#設(shè)置每個(gè)子進(jìn)程重生之前服務(wù)的請(qǐng)求數(shù). 對(duì)于可能存在內(nèi)存泄漏的第三方模塊來(lái)說(shuō)是非常有用的. 如果設(shè)置為 '0' 則一直接受請(qǐng)求. 等同于 PHP_FCGI_MAX_REQUESTS 環(huán)境變量. 默認(rèn)值: 0.

pm.status_path = /status
#FPM狀態(tài)頁(yè)面的網(wǎng)址. 如果沒(méi)有設(shè)置, 則無(wú)法訪(fǎng)問(wèn)狀態(tài)頁(yè)面. 默認(rèn)值: none. munin監(jiān)控會(huì)使用到

ping.path = /ping
#FPM監(jiān)控頁(yè)面的ping網(wǎng)址. 如果沒(méi)有設(shè)置, 則無(wú)法訪(fǎng)問(wèn)ping頁(yè)面. 該頁(yè)面用于外部檢測(cè)FPM是否存活并且可以響應(yīng)請(qǐng)求. 請(qǐng)注意必須以斜線(xiàn)開(kāi)頭 (/)是整。

ping.response = pong
#用于定義ping請(qǐng)求的返回相應(yīng). 返回為 HTTP 200 的 text/plain 格式文本. 默認(rèn)值: pong.

request_terminate_timeout = 0
#設(shè)置單個(gè)請(qǐng)求的超時(shí)中止時(shí)間. 該選項(xiàng)可能會(huì)對(duì)php.ini設(shè)置中的'max_execution_time'因?yàn)槟承┨厥庠驔](méi)有中止運(yùn)行的腳本有用. 設(shè)置為 '0' 表示 'Off'.當(dāng)經(jīng)常出現(xiàn)502錯(cuò)誤時(shí)可以嘗試更改此選項(xiàng)肖揣。

request_slowlog_timeout = 10s
#當(dāng)一個(gè)請(qǐng)求該設(shè)置的超時(shí)時(shí)間后,就會(huì)將對(duì)應(yīng)的PHP調(diào)用堆棧信息完整寫(xiě)入到慢日志中. 設(shè)置為 '0' 表示 'Off'

slowlog = log/$pool.log.slow
#慢請(qǐng)求的記錄日志,配合request_slowlog_timeout使用

rlimit_files = 1024
#設(shè)置文件打開(kāi)描述符的rlimit限制. 默認(rèn)值: 系統(tǒng)定義值默認(rèn)可打開(kāi)句柄是1024浮入,可使用 ulimit -n查看龙优,ulimit -n 2048修改。

rlimit_core = 0
#設(shè)置核心rlimit最大限制值. 可用值: 'unlimited' 舵盈、0或者正整數(shù). 默認(rèn)值: 系統(tǒng)定義值.

chroot =
#啟動(dòng)時(shí)的Chroot目錄. 所定義的目錄需要是絕對(duì)路徑. 如果沒(méi)有設(shè)置, 則chroot不被使用.

chdir =
#設(shè)置啟動(dòng)目錄陋率,啟動(dòng)時(shí)會(huì)自動(dòng)Chdir到該目錄. 所定義的目錄需要是絕對(duì)路徑. 默認(rèn)值: 當(dāng)前目錄球化,或者/目錄(chroot時(shí))

catch_workers_output = yes
#重定向運(yùn)行過(guò)程中的stdout和stderr到主要的錯(cuò)誤日志文件中. 如果沒(méi)有設(shè)置, stdout 和 stderr 將會(huì)根據(jù)FastCGI的規(guī)則被重定向到 /dev/null . 默認(rèn)值: 空

fpm進(jìn)程狀態(tài)監(jiān)控

1、nginx配置:遇到 status 的請(qǐng)求瓦糟,直接轉(zhuǎn)發(fā)給php

2筒愚、fpm配置:pm.status_path = /status

3、然后重新fpm和nginx菩浙,在瀏覽器里訪(fǎng)問(wèn)就能看到了:

默認(rèn)以 text/plain 展示結(jié)果巢掺,可以傳參數(shù) ?json/html/xml 分別得到j(luò)son等格式的結(jié)果;參數(shù)full可以查看每個(gè)子進(jìn)程的明細(xì)

img
  1. pool 進(jìn)程池名稱(chēng)
  2. process manager 進(jìn)程管理方式
  3. start time 進(jìn)程什么時(shí)候啟動(dòng)的
  4. start since 進(jìn)程已經(jīng)運(yùn)行了多少秒
  5. accepted conn 該池總共accept了多少連接
  6. listen queue 等待accept的連接的數(shù)量
  7. max listen queue fpm啟動(dòng)后劲蜻,歷史最高等待accept的連接的數(shù)量
  8. listen queue len 配置的監(jiān)聽(tīng)隊(duì)列最大長(zhǎng)度 受限于listen.backlog和系統(tǒng)cat /proc/sys/net/core/somaxconn陆淀,兩者中取最小值
  9. idle processes 閑置的進(jìn)程數(shù)
  10. active process 正在工作的進(jìn)程數(shù)(加上限制的,就是總的子進(jìn)程數(shù))
  11. total processes 總的子進(jìn)程數(shù)量
  12. max active processes fpm啟動(dòng)后先嬉,歷史最多同時(shí)工作的進(jìn)程數(shù)
  13. max children reached 進(jìn)程管理模式為 'dynamic'和 'ondemand'時(shí)轧苫,此數(shù)值是當(dāng)子進(jìn)程不夠用時(shí),master創(chuàng)建更多子進(jìn)程的次數(shù)
  14. slow requests 慢請(qǐng)求個(gè)數(shù)
  15. full參數(shù)下
  16. pid 子進(jìn)程ID;
  17. state 子進(jìn)程狀態(tài)(Idle, Running, ...);
  18. start time 子進(jìn)程啟動(dòng)的時(shí)間;
  19. start since 子進(jìn)程啟動(dòng)后運(yùn)行了多少秒;
  20. requests 當(dāng)前子進(jìn)程一共處理了多少個(gè)請(qǐng)求;
  21. request duration 請(qǐng)求耗費(fèi)的納秒數(shù);
  22. request method 請(qǐng)求方法 (GET, POST, ...);
  23. request URI 請(qǐng)求參數(shù);
  24. content length POST請(qǐng)求時(shí)疫蔓,請(qǐng)求的內(nèi)容長(zhǎng)度;
  25. user - the user (PHP_AUTH_USER) (or '-' if not set);
  26. script 請(qǐng)求的哪個(gè)php文件;
  27. last request cpu 上次請(qǐng)求耗費(fèi)的cpu資源
  28. last request memory 上次請(qǐng)求耗費(fèi)的內(nèi)存峰值
  29. 如果進(jìn)程是閑置狀態(tài)含懊,那這些信息記錄的就是上次請(qǐng)求的相關(guān)數(shù)據(jù),否則就是當(dāng)前本次請(qǐng)求的相關(guān)數(shù)據(jù)衅胀。

參考:http://www.cnblogs.com/52php/p/6278265.html

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末岔乔,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子滚躯,更是在濱河造成了極大的恐慌雏门,老刑警劉巖,帶你破解...
    沈念sama閱讀 217,734評(píng)論 6 505
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件掸掏,死亡現(xiàn)場(chǎng)離奇詭異茁影,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)阅束,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,931評(píng)論 3 394
  • 文/潘曉璐 我一進(jìn)店門(mén)呼胚,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人息裸,你說(shuō)我怎么就攤上這事』Ρ啵” “怎么了呼盆?”我有些...
    開(kāi)封第一講書(shū)人閱讀 164,133評(píng)論 0 354
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)蚁廓。 經(jīng)常有香客問(wèn)我访圃,道長(zhǎng),這世上最難降的妖魔是什么相嵌? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,532評(píng)論 1 293
  • 正文 為了忘掉前任腿时,我火速辦了婚禮况脆,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘批糟。我一直安慰自己格了,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,585評(píng)論 6 392
  • 文/花漫 我一把揭開(kāi)白布徽鼎。 她就那樣靜靜地躺著盛末,像睡著了一般。 火紅的嫁衣襯著肌膚如雪否淤。 梳的紋絲不亂的頭發(fā)上悄但,一...
    開(kāi)封第一講書(shū)人閱讀 51,462評(píng)論 1 302
  • 那天,我揣著相機(jī)與錄音石抡,去河邊找鬼檐嚣。 笑死,一個(gè)胖子當(dāng)著我的面吹牛啰扛,可吹牛的內(nèi)容都是我干的净嘀。 我是一名探鬼主播,決...
    沈念sama閱讀 40,262評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼侠讯,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼挖藏!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起厢漩,我...
    開(kāi)封第一講書(shū)人閱讀 39,153評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤膜眠,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后溜嗜,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體宵膨,經(jīng)...
    沈念sama閱讀 45,587評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,792評(píng)論 3 336
  • 正文 我和宋清朗相戀三年炸宵,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了辟躏。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 39,919評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡土全,死狀恐怖捎琐,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情裹匙,我是刑警寧澤瑞凑,帶...
    沈念sama閱讀 35,635評(píng)論 5 345
  • 正文 年R本政府宣布,位于F島的核電站概页,受9級(jí)特大地震影響籽御,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,237評(píng)論 3 329
  • 文/蒙蒙 一技掏、第九天 我趴在偏房一處隱蔽的房頂上張望铃将。 院中可真熱鬧,春花似錦哑梳、人聲如沸劲阎。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 31,855評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)哪工。三九已至,卻和暖如春弧哎,著一層夾襖步出監(jiān)牢的瞬間雁比,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 32,983評(píng)論 1 269
  • 我被黑心中介騙來(lái)泰國(guó)打工撤嫩, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留偎捎,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 48,048評(píng)論 3 370
  • 正文 我出身青樓序攘,卻偏偏與公主長(zhǎng)得像茴她,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子程奠,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,864評(píng)論 2 354

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

  • 1. Nginx的模塊與工作原理 Nginx由內(nèi)核和模塊組成丈牢,其中,內(nèi)核的設(shè)計(jì)非常微小和簡(jiǎn)潔瞄沙,完成的工作也非常簡(jiǎn)單...
    rosekissyou閱讀 10,214評(píng)論 5 124
  • Spring Cloud為開(kāi)發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見(jiàn)模式的工具(例如配置管理己沛,服務(wù)發(fā)現(xiàn),斷路器距境,智...
    卡卡羅2017閱讀 134,656評(píng)論 18 139
  • 原文github地址 1.PHP概述 1.1 PHP的歷史發(fā)展 1995年由Lerdorf創(chuàng)建PHP申尼,高級(jí)腳本語(yǔ)言...
    10xjzheng閱讀 1,519評(píng)論 0 2
  • 轉(zhuǎn)自:http://www.jb51.net/article/42716.htm 一、約定幾個(gè)目錄 /usr/lo...
    Shaun_lan閱讀 2,746評(píng)論 1 4
  • php-fpm的啟動(dòng)參數(shù) #測(cè)試php-fpm配置 /usr/local/php/sbin/php-fpm -t ...
    落櫻月千殤閱讀 1,093評(píng)論 0 2