php-fpm進程數控制


一、名詞解釋

CGI是Common Gateway Interface(通用網管協議),用於讓交互程序和Web服務器通信的協議。負責處理URL的請求,啟動一個進程,將客戶端發送的數據作為輸入,有Web服務器收集程序的輸出並加上合適的頭部,再發送回客戶端。

FastCGI是基於CGI的增強版本的協議,不同於創建新的進程來服務請求,使用持續的進程和創建的子進程來處理連串的進程,這些進程由FastCGI服務器管理,開銷更小,效率更高。

PHP-FPM是PHP實現的FastCGI Process Manager(FastCGI進程管理器),用於替換PHP FastCGI的大部分功能,適用於高負載網站。支持的功能如:

  1. 平滑停止/啟動的高級進程管理功能

  2. 慢日志記錄腳本

  3. 動態/靜態子進程產生

  4. 基於php.ini的配置文件

 

二、PHP-FPM配置

PHP-FPM配置文件為php-fpm.conf (例如:php-fpm容器中的/usr/local/etc/php-fpm.d/xlaravel.pool.conf)。下面所有的子進程均指php-fpm進程,可以在終端通過 ps aux |grep php 查看到。

  • 顯示 php-fpm: pool www 的代表work子進程(實際處理請求)
  • 顯示 php-fpm: process master 的代表master主進程(負責管理work子進程)
user = www-data
group = www-data
#啟動進程的帳戶和組

listen = 0.0.0.0:9000

pm = dynamic
#如何控制子進程,選項有static和dynamic。如果選擇static,則由pm.max_children指定固定的子進程數。如果選擇dynamic,則由以下參數決定:
pm.max_children = 20   #,子進程最大數
pm.start_servers = 45   #,啟動時的進程數
pm.min_spare_servers = 30   #,保證空閑進程數最小值,如果空閑進程小於此值,則創建新的子進程   
pm.max_spare_servers = 60   #,保證空閑進程數最大值,如果空閑進程大於此值,此進行清理


request_terminate_timeout = 300
#設置單個請求的超時中止時間. 該選項可能會對php.ini設置中的’max_execution_time’因為某些特殊原因沒有中止運行的腳本有用. 設置為 ’0′ 表示 ‘Off’.當經常出現502錯誤時可以嘗試更改此選項。


catch_workers_output = yes
#重定向運行過程中的stdout和stderr到主要的錯誤日志文件中. 如果沒有設置, stdout 和 stderr 將會根據FastCGI的規則被重定向到 /dev/null . 默認值: 空.

 

php-fpm優化參數介紹

他們分別是:pm、pm.max_children、pm.start_servers、pm.min_spare_servers、pm.max_spare_servers。

pm:表示使用那種方式,有兩個值可以選擇,就是static(靜態)或者dynamic(動態)。

下面4個參數的意思分別為:
pm.max_children:靜態方式下開啟的php-fpm進程數量
pm.start_servers:動態方式下的起始php-fpm進程數量
pm.min_spare_servers:動態方式下的最小php-fpm進程數
pm.max_spare_servers:動態方式下的最大php-fpm進程數量

區別:
如果dm設置為 static,那么其實只有pm.max_children這個參數生效。系統會開啟設置數量的php-fpm進程。
如果dm設置為 dynamic,那么pm.max_children參數失效,后面3個參數生效。
系統會在php-fpm運行開始 的時候啟動pm.start_servers個php-fpm進程,
然后根據系統的需求動態在pm.min_spare_servers和pm.max_spare_servers之間調整php-fpm進程數

 

ps auxw|head -1;ps auxw|sort -rn -k4|head -40
# 查看消耗內存最多的前40個進程


ps -fe |grep "php-fpm"|grep "pool"|wc -l
# 查看服務器上一共開了多少的 php-cgi 進程

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM