PHP 日本研討會 2024

狀態頁面

此頁面提供有關 FPM 狀態頁面的設定和內容資訊。另請參閱 fpm_get_status()

組態

可以通過在 FPM 池組態中設定 pm.status_path 組態參數來啟用 FPM 狀態頁面。

注意

為了安全起見,FPM 狀態頁面應僅限於內部請求或已知的客戶端 IP,因為該頁面會揭露請求 URL 和有關可用資源的資訊。

根據網頁伺服器組態,可能需要組態網頁伺服器以允許直接向此路徑發出請求,繞過任何 PHP 腳本。一個針對 Apache 的組態範例,FPM 監聽 UDS,並且 pm.status_path 設定為 /fpm-status,看起來會像這樣

<LocationMatch "/fpm-status">
 Order Allow,Deny
 Allow from 127.0.0.1
 ProxyPass "unix:/var/run/php-fpm.sock|fcgi://127.0.0.1/fpm-status"
</LocationMatch>

重新載入或重新啟動 FPM 和網頁伺服器之後,可以從瀏覽器存取狀態頁面(只要請求來自允許的 IP 位址,如果已組態 IP 限制)。

查詢參數

可以通過指定以下查詢參數之一來更改狀態頁面輸出的格式

  • html
  • json
  • openmetrics
  • xml

也可以使用 full 查詢參數來傳回其他資訊。

狀態頁面 URL 範例

  • https://127.0.0.1/fpm-status - 預設文字格式的簡要輸出
  • https://127.0.0.1/fpm-status?full - 預設文字格式的完整輸出
  • https://127.0.0.1/fpm-status?json - JSON 格式的簡要輸出
  • https://127.0.0.1/fpm-status?html&full - HTML 格式的完整輸出

顯示的資訊

日期/時間值在 JSON 和 XML 輸出中使用 Unix 時間戳記格式,否則它們使用以下範例日期 "03/Jun/2021:07:21:46 +0100" 所產生的格式。

基本資訊 - 始終顯示在狀態頁面上
參數 描述
FPM 程序池的名稱。
程序管理器 程序管理器類型 - static、dynamic 或 ondemand。
開始時間 程序池上次啟動的日期/時間。
啟動以來 程序池上次啟動後的秒數。
接受的連線 已接受連線的總數。
監聽佇列 目前等待可用程序的請求數 (backlog)。
最大監聽佇列 在任何時間點上,監聽佇列中出現的最大請求數。
監聽佇列長度 監聽佇列允許的最大大小。
閒置程序 目前閒置(等待請求)的程序數。
活動程序 目前正在處理請求的程序數。
程序總數 目前程序的總數。
最大活動程序 並行活動程序的最大數量。
已達到最大子程序 是否曾經達到程序的最大數量?如果是,則顯示的值大於或等於 1,否則該值為 0
慢速請求 已達到已組態 request_slowlog_timeout 的請求總數。
每個程序的資訊 - 僅在 full 輸出模式下顯示
參數 描述
pid 程序的系統 PID。
狀態 程序的狀態 - 閒置、執行中、...
開始時間 程序啟動的日期/時間。
啟動以來 程序啟動後的秒數。
請求 已服務的請求總數。
請求持續時間 服務上次請求所花費的總時間(以微秒為單位)。
請求方法 上次服務請求的 HTTP 方法。
請求 URI 上次服務請求的 URI(在網頁伺服器處理之後,如果您使用前端控制器模式重新導向,它可能始終是 /index.php)。
內容長度 上次請求的請求主體長度(以位元組為單位)。
使用者 上次請求的 HTTP 使用者 (PHP_AUTH_USER)。
腳本 上次請求執行的腳本的完整路徑。如果沒有適用(例如:狀態頁面請求),則為 '-'
上次請求 CPU 上次請求的 % CPU。如果程序不是閒置狀態,則此值為 0,因為計算是在請求處理完成時完成的。該值可以超過 100%,因為度量標準將告知在上次請求中使用了總 CPU 時間的百分比 - 將所有核心上的程序都考慮在內,而 100% 僅針對一個核心。
上次請求記憶體 上次請求消耗的最大記憶體量。如果程序不是閒置狀態,則此值為 0,因為計算是在請求處理完成時完成的。

注意:

所有值都是特定於池的,並在 FPM 重新啟動時重設。

注意:

OpenMetrics 格式輸出使用不同的參數類型,以更好地適應 OpenMetrics 格式。參數及其值的描述包含在 OpenMetrics 格式輸出中。

變更記錄

版本 描述
8.1.0 新增了 openmetrics 格式。
新增註解

使用者貢獻的註解 2 註解

uwe at ohse dot de
2 年前
在其他人誤解之前
"請求持續時間 服務請求所花費的總時間(以秒為單位)。"

這不是該程序完成的所有請求的總時間,而是上次完成的請求所使用的時間(閒置狀態),或目前的請求(所有其他狀態)。

給定的數字不是以秒為單位,而是以微秒為單位。

FPM 狀態說明文件一團糟。
nospam at briat dot org
1 天前
為了記錄,如果您未使用套接字(遠端 php-fpm),這裡是要新增到您虛擬主機的行
ProxyPassMatch ^/status$ fcgi://[FPM-HOST]:[FPM-PORT]/status
To Top