php-fpm配置文件詳解

FPM 配置

參數(shù) 說明
-p 命令行
;include=etc/fpm.d/*.conf 用于包含一個或多個文件献起,如果glob(3)存在(glob()函數(shù)返回匹配指定模式的文件名或目錄)

第二部分:全局配置

  • 由標(biāo)志[global]開始:
;pid = run/php-fpm.pid      設(shè)置pid文件的位置捺僻,默認(rèn)目錄路徑 /usr/local/php/var
;error_log = log/php-fpm.log  記錄錯誤日志的文件,默認(rèn)目錄路徑 /usr/local/php/var
;syslog.facility = daemon    用于指定什么類型的程序日志消息。
;syslog.ident = php-fpm      用于FPM多實例甄別
;log_level = notice        記錄日志的等級献烦,默認(rèn)notice,可取值alert, error, warning, notice, debug
;emergency_restart_threshold = 0 如果子進程在這個時間段內(nèi)帶有IGSEGV或SIGBUS退出卖词,則重啟fpm巩那,默認(rèn)0表示關(guān)閉這個功能
;emergency_restart_interval = 0 設(shè)置時間間隔來決定服務(wù)的初始化時間(默認(rèn)單位:s秒)吏夯,可選s秒,m分即横,h時噪生,d天
;process_control_timeout = 0    子進程等待master進程對信號的回應(yīng)(默認(rèn)單位:s秒),可選s秒东囚,m分,h時页藻,d天
; process.max = 128         控制最大進程數(shù)份帐,使用時需謹(jǐn)慎
; process.priority = -19      處理nice(2)的進程優(yōu)先級別-19(最高)到20(最低)
;rlimit_files = 1024        設(shè)置主進程文件描述符rlimit的數(shù)量
;rlimit_core = 0           設(shè)置主進程rlimit最大核數(shù)
;events.mechanism = epoll     使用處理event事件的機制
  ; - select     (any POSIX os)
  ; - poll       (any POSIX os)
  ; - epoll      (linux >= 2.5.44)
  ; - kqueue     (FreeBSD >= 4.1, OpenBSD >= 2.9, NetBSD >= 2.0)
  ; - /dev/poll  (Solaris >= 7)
  ; - port       (Solaris >= 10)
;daemonize = yes           將fpm轉(zhuǎn)至后臺運行璃吧,如果設(shè)置為“no”废境,那么fpm會運行在前臺
;systemd_interval = 10

第三部分:進程池的定義

** 通過監(jiān)聽不同的端口和不用管理選擇可以定義多個不同的子進程池畜挨,進程池被用與記錄和統(tǒng)計,對于fpm能夠處理進程池數(shù)目的多少并沒有限制
其中$pool變量可以在任何指令中使用噩凹,他將會替代相應(yīng)的進程池名字巴元。例如:這里的
[www]**

[root@test ~]# ps -ef | grep php-fpm
root      3028     1  0 20:33 ?        00:00:00 php-fpm: master process (/usr/local/php/etc/php-fpm.conf)
nobody    3029  3028  0 20:33 ?        00:00:00 php-fpm: pool www          
nobody    3030  3028  0 20:33 ?        00:00:00 php-fpm: pool www
[www]
; It only applies on the following directives:
; - 'access.log'
; - 'slowlog'
; - 'listen' (unixsocket)
; - 'chroot'
; - 'chdir'
; - 'php_values'
; - 'php_admin_values'

;prefix = /path/to/pools/$pool   如果沒有制定,將使用全局prefix替代
user = nobody             進程的發(fā)起用戶和用戶組驮宴,用戶user是必須設(shè)置幻赚,group不是
group = nobody
listen = 127.0.0.1:9000       監(jiān)聽ip和端口
;listen.backlog = 65535       設(shè)置listen(2)函數(shù)backlog
;listen.owner = nobody
;listen.group = nobody
;listen.mode = 0660
;listen.acl_users =
;listen.acl_groups =
;listen.allowed_clients = 127.0.0.1 允許FastCGI客戶端連接的IPv4地址,多個地址用','分隔佳谦,為空則允許任何地址發(fā)來鏈接請求
; process.priority = -19
pm = dynamic              選擇進程池管理器如何控制子進程的數(shù)量
  static:  對于子進程的開啟數(shù)路給定一個鎖定的值(pm.max_children)
  dynamic:  子進程的數(shù)目為動態(tài)的咪笑,它的數(shù)目基于下面的指令的值(以下為dynamic適用參數(shù))
    pm.max_children:  同一時刻能夠存貨的最大子進程的數(shù)量
    pm.start_servers: 在啟動時啟動的子進程數(shù)量
    pm.min_spare_servers: 處于空閑"idle"狀態(tài)的最小子進程,如果空閑進程數(shù)量小于這個值,那么相應(yīng)的子進程會被創(chuàng)建
    pm.max_spare_servers: 最大空閑子進程數(shù)量荸镊,空閑子進程數(shù)量超過這個值晋柱,那么相應(yīng)的子進程會被殺掉雁竞。
  ondemand: 在啟動時不會創(chuàng)建钦椭,只有當(dāng)發(fā)起請求鏈接時才會創(chuàng)建(pm.max_children, pm.process_idle_timeout)

pm.max_children = 5
pm.start_servers = 2
pm.min_spare_servers = 1
pm.max_spare_servers = 3
;pm.process_idle_timeout = 10s;  空閑進程超時時間
;pm.max_requests = 500        在派生新的子進程前彪腔,每一個子進程應(yīng)該處理的請求數(shù)目进栽,在第三方庫中解決內(nèi)存溢出很有用德挣,設(shè)置為0則不會限制
;pm.status_path = /status        配置一個URI,以便查看fpm狀態(tài)頁
狀態(tài)頁描述:
  accepted conn: 該進程池接受的請求數(shù)量
  pool: 進程池的名字
  process manager: 進程管理快毛,就是配置中pm指令唠帝,可以選擇值static屯掖,dynamic,ondemand
  idle processes: 空閑進程數(shù)量
  active processes: 當(dāng)前活躍的進程數(shù)量
  total processes: 總的進程數(shù)量=idle+active
  max children reached: 達(dá)到最大子進程的次數(shù)襟衰,達(dá)到進程的限制瀑晒,當(dāng)pm試圖開啟更多的子進程的時候(僅當(dāng)pm工作在dynamic時)
;ping.path = /ping    該ping URI將會去調(diào)用fpm監(jiān)控頁面绍坝,如果這個沒有設(shè)置,那么不會有URI被做為ping頁
;ping.response = pong  用于定制平請求的響應(yīng)苔悦,響應(yīng)的格式text/plain(對200響應(yīng)代碼)
;access.log = log/$pool.access.log
;access.format = "%R - %u %t \"%m %r%Q%q\" %s %f %{mili}d %{kilo}M %C%%"
  ; The following syntax is allowed
  ;  %%: the '%' character
  ;  %C: %CPU used by the request
  ;      it can accept the following format:
  ;      - %{user}C for user CPU only
  ;      - %{system}C for system CPU only
  ;      - %{total}C  for user + system CPU (default)
  ;  %d: time taken to serve the request
  ;      it can accept the following format:
  ;      - %{seconds}d (default)
  ;      - %{miliseconds}d
  ;      - %{mili}d
  ;      - %{microseconds}d
  ;      - %{micro}d
  ;  %e: an environment variable (same as $_ENV or $_SERVER)
  ;      it must be associated with embraces to specify the name of the env
  ;      variable. Some exemples:
  ;      - server specifics like: %{REQUEST_METHOD}e or %{SERVER_PROTOCOL}e
  ;      - HTTP headers like: %{HTTP_HOST}e or %{HTTP_USER_AGENT}e
  ;  %f: script filename
  ;  %l: content-length of the request (for POST request only)
  ;  %m: request method
  ;  %M: peak of memory allocated by PHP
  ;      it can accept the following format:
  ;      - %{bytes}M (default)
  ;      - %{kilobytes}M
  ;      - %{kilo}M
  ;      - %{megabytes}M
  ;      - %{mega}M
  ;  %n: pool name
  ;  %o: output header
  ;      it must be associated with embraces to specify the name of the header:
  ;      - %{Content-Type}o
  ;      - %{X-Powered-By}o
  ;      - %{Transfert-Encoding}o
  ;      - ....
  ;  %p: PID of the child that serviced the request
  ;  %P: PID of the parent of the child that serviced the request
  ;  %q: the query string
  ;  %Q: the '?' character if query string exists
  ;  %r: the request URI (without the query string, see %q and %Q)
  ;  %R: remote IP address
  ;  %s: status (response code)
  ;  %t: server time the request was received
  ;      it can accept a strftime(3) format:
  ;      %d/%b/%Y:%H:%M:%S %z (default)
  ;  %T: time the log has been written (the request has finished)
  ;      it can accept a strftime(3) format:
  ;      %d/%b/%Y:%H:%M:%S %z (default)
  ;  %u: remote user
;slowlog = log/$pool.log.slow   用于記錄慢請求
;request_slowlog_timeout = 0    慢日志請求超時時間轩褐,對一個php程序進行跟蹤。
;request_terminate_timeout = 0  終止請求超時時間间坐,在worker進程被殺掉之后灾挨,提供單個請求的超時間隔邑退。由于某種原因不停止腳本執(zhí)行時,應(yīng)該使用該選項劳澄,0表示關(guān)閉不啟用
  (在php.ini中地技,max_execution_time 一般設(shè)置為30,表示每一個腳本的最大執(zhí)行時間)
;rlimit_files = 1024        設(shè)置打開文件描述符的限制
;rlimit_core = 0           設(shè)置內(nèi)核對資源的使用限制秒拔,用于內(nèi)核轉(zhuǎn)儲
;chroot =               設(shè)置chroot路徑莫矗,程序一啟動就將其chroot放置到指定的目錄下,該指令值必須是一個絕對路徑
;chdir = /var/www          在程序啟動時將會改變到指定的位置(這個是相對路徑砂缩,相對當(dāng)前路徑或chroot后的“/”目錄)    
;catch_workers_output = yes    將worker的標(biāo)準(zhǔn)輸出和錯誤輸出重定向到主要的錯誤日志記錄中作谚,如果沒有設(shè)置,根據(jù)FastCGI的指定庵芭,將會被重定向到/dev/null上
;clear_env = no            清理環(huán)境
;security.limit_extensions = .php .php3 .php4 .php5  限制FPM執(zhí)行解析的擴展名
;env[HOSTNAME] = $HOSTNAME
;env[PATH] = /usr/local/bin:/usr/bin:/bin
;env[TMP] = /tmp
;env[TMPDIR] = /tmp
;env[TEMP] = /tmp

; Additional php.ini defines, specific to this pool of workers. These settings
; overwrite the values previously defined in the php.ini. The directives are the
; same as the PHP SAPI:
;   php_value/php_flag             - you can set classic ini defines which can
;                                    be overwritten from PHP call 'ini_set'.
;   php_admin_value/php_admin_flag - these directives won't be overwritten by
;                                     PHP call 'ini_set'
; For php_*flag, valid values are on, off, 1, 0, true, false, yes or no.

; Defining 'extension' will load the corresponding shared extension from
; extension_dir. Defining 'disable_functions' or 'disable_classes' will not
; overwrite previously defined php.ini values, but will append the new value
; instead.

;php_admin_value[sendmail_path] = /usr/sbin/sendmail -t -i -f www@my.domain.com
;php_flag[display_errors] = off
;php_admin_value[error_log] = /var/log/fpm-php.www.log
;php_admin_flag[log_errors] = on
;php_admin_value[memory_limit] = 32M

總結(jié)

  • 在php-fpm的配置文件中妹懒,有兩個指令非常重要,就是"pm.max_children" 和 "request_terminate_timeout"
     第一個指令"pm.max_children" 確定了php-fpm的處理能力双吆,原則上時越多越好眨唬,但這個是在內(nèi)存足夠打的前提下,每開啟一個php-fpm進程要占用近30M左右的內(nèi)存
     如果請求訪問較多好乐,那么可能會出現(xiàn)502匾竿,504錯誤。對于502錯誤來說蔚万,屬于繁忙進程而造成的岭妖,對于504來說,就是客戶發(fā)送的請求在限定的時間內(nèi)沒有得到相應(yīng)反璃,過多的請求導(dǎo)致“504 Gateway Time-out”昵慌。這里也有可能是服務(wù)器帶寬問題。
    另外一個需要注意的指令"request_terminate_timeout"淮蜈,它決定php-fpm進程的連接/發(fā)送和讀取的時間废离,如果設(shè)置過小很容易出現(xiàn)"502 Bad Gateway" 和 “504 Gateway Time-out”,默認(rèn)為0礁芦,就是說沒有啟用,不加限制悼尾,但是這種設(shè)置前提是你的php-fpm足夠健康柿扣,這個需要根據(jù)實際情況加以限定。
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末闺魏,一起剝皮案震驚了整個濱河市未状,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌析桥,老刑警劉巖司草,帶你破解...
    沈念sama閱讀 216,997評論 6 502
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件艰垂,死亡現(xiàn)場離奇詭異,居然都是意外死亡埋虹,警方通過查閱死者的電腦和手機猜憎,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,603評論 3 392
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來搔课,“玉大人胰柑,你說我怎么就攤上這事∨滥啵” “怎么了柬讨?”我有些...
    開封第一講書人閱讀 163,359評論 0 353
  • 文/不壞的土叔 我叫張陵,是天一觀的道長袍啡。 經(jīng)常有香客問我踩官,道長,這世上最難降的妖魔是什么境输? 我笑而不...
    開封第一講書人閱讀 58,309評論 1 292
  • 正文 為了忘掉前任蔗牡,我火速辦了婚禮,結(jié)果婚禮上畴嘶,老公的妹妹穿的比我還像新娘蛋逾。我一直安慰自己,他們只是感情好窗悯,可當(dāng)我...
    茶點故事閱讀 67,346評論 6 390
  • 文/花漫 我一把揭開白布区匣。 她就那樣靜靜地躺著,像睡著了一般蒋院。 火紅的嫁衣襯著肌膚如雪亏钩。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,258評論 1 300
  • 那天欺旧,我揣著相機與錄音姑丑,去河邊找鬼。 笑死辞友,一個胖子當(dāng)著我的面吹牛栅哀,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播称龙,決...
    沈念sama閱讀 40,122評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼留拾,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了鲫尊?” 一聲冷哼從身側(cè)響起痴柔,我...
    開封第一講書人閱讀 38,970評論 0 275
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎疫向,沒想到半個月后咳蔚,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體豪嚎,經(jīng)...
    沈念sama閱讀 45,403評論 1 313
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,596評論 3 334
  • 正文 我和宋清朗相戀三年谈火,在試婚紗的時候發(fā)現(xiàn)自己被綠了侈询。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 39,769評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡堆巧,死狀恐怖妄荔,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情谍肤,我是刑警寧澤啦租,帶...
    沈念sama閱讀 35,464評論 5 344
  • 正文 年R本政府宣布,位于F島的核電站荒揣,受9級特大地震影響篷角,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜系任,卻給世界環(huán)境...
    茶點故事閱讀 41,075評論 3 327
  • 文/蒙蒙 一恳蹲、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧俩滥,春花似錦嘉蕾、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,705評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至挂据,卻和暖如春以清,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背崎逃。 一陣腳步聲響...
    開封第一講書人閱讀 32,848評論 1 269
  • 我被黑心中介騙來泰國打工掷倔, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人个绍。 一個月前我還...
    沈念sama閱讀 47,831評論 2 370
  • 正文 我出身青樓勒葱,卻偏偏與公主長得像,于是被迫代替她去往敵國和親巴柿。 傳聞我的和親對象是個殘疾皇子错森,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,678評論 2 354

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