如何在 Nginx 中啟用和監控 PHP-FPM 狀態?


PHP-FPM(FastCGI 程序管理器)是 PHP 作為 FastCGI 程序管理器的一種流行實現。它提供了比傳統 PHP 實現顯著的效能改進,並且廣泛用於高流量網站。Nginx 是一款流行的 Web 伺服器和反向代理,可用於透過 PHP-FPM 提供 PHP 應用程式。在本文中,我們將討論如何在 Nginx 中啟用和監控 PHP-FPM 狀態。

啟用 PHP-FPM 狀態頁面

PHP-FPM 帶有一個內建的狀態頁面,提供有關 PHP-FPM 程序當前狀態的即時資訊。在 Nginx 中啟用 PHP-FPM 狀態頁面是一個簡單的過程。

首先,使用您喜歡的文字編輯器開啟 PHP-FPM 配置檔案。此檔案的位置可能因系統配置而異。例如,在 Ubuntu 上,該檔案位於 /etc/php/7.4/fpm/pool.d/www.conf。

接下來,取消以下行的註釋:

pm.status_path = /status
ping.path = /ping

這些行啟用狀態和 ping 頁面。儲存更改並重新啟動 PHP-FPM 服務:

sudo service php7.4-fpm restart

接下來,編輯 PHP 應用程式的 Nginx 配置檔案。將以下 location 塊新增到 server 塊中:

location ~ ^/(status|ping)$ {
   access_log off;
   allow 127.0.0.1;
   deny all;
   include fastcgi_params;
   fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
   fastcgi_param SCRIPT_NAME $fastcgi_script_name;
   fastcgi_param REQUEST_METHOD $request_method;
   fastcgi_param QUERY_STRING $query_string;
   fastcgi_param CONTENT_TYPE $content_type;
   fastcgi_param CONTENT_LENGTH $content_length;
   fastcgi_pass 127.0.0.1:9000;
}

此 location 塊僅允許從 localhost 訪問狀態和 ping 頁面。您可以更改 IP 地址以允許從其他 IP 地址訪問。

儲存更改並重新載入 Nginx 配置:

sudo service nginx reload

您現在可以透過訪問 http://your-domain.com/status 訪問 PHP-FPM 狀態頁面,透過訪問 http://your-domain.com/ping 訪問 ping 頁面。如果一切配置正確,您應該會看到一個包含有關 PHP-FPM 程序的即時資訊的頁面。

監控 PHP-FPM 狀態

監控 PHP-FPM 狀態頁面是維護健康 PHP 應用程式的重要組成部分。它允許您檢測和診斷 PHP-FPM 程序的問題。

一種監控 PHP-FPM 狀態頁面的方法是使用 curl 等工具。例如,要獲取狀態資訊,您可以執行以下命令:

curl http://your-domain.com/status

此命令將在您的終端中輸出狀態資訊。

另一種監控 PHP-FPM 狀態頁面的方法是使用 Nagios、Zabbix 或 Prometheus 等監控工具。這些工具允許您根據 PHP-FPM 程序的狀態設定警報和通知。

除了使用 curl 和 Nagios 等工具監控 PHP-FPM 狀態頁面外,還有幾種基於 Web 的監控工具可用。一種流行的工具是 PHP-FPM 狀態頁面指令碼,它是一個基於 Web 的指令碼,提供有關 PHP-FPM 程序的詳細概述。此指令碼可以輕鬆安裝在您的伺服器上,並配置為提供 PHP-FPM 程序的即時監控。

另一種選擇是使用 PHP-FPM 的內建監控功能。PHP-FPM 帶有幾個內建監控工具,包括我們之前啟用的 pm.status_path 和 ping.path 指令。這些工具提供有關 PHP-FPM 程序狀態的詳細資訊,包括活動程序數、空閒程序數和處理的總請求數。

您還可以使用 pm.status_listen 指令為 PHP-FPM 狀態監控啟用 TCP/IP 套接字。這允許您使用 telnet 等工具連線到套接字並即時檢視狀態資訊。

需要注意的是,雖然監控 PHP-FPM 狀態頁面對於維護健康的 PHP 應用程式至關重要,但監控其他指標(如 CPU 和記憶體使用情況)也很重要。這些指標可以幫助您識別效能瓶頸並最佳化 PHP-FPM 配置以獲得更好的效能。

另一種監控 PHP-FPM 狀態的方法是使用 New Relic 或 Datadog 等第三方監控服務。這些服務可以提供有關 PHP 應用程式效能的詳細資訊,包括與 PHP-FPM 程序相關的指標。

例如,New Relic 為 PHP 應用程式提供即時效能監控和診斷。它可以配置為監控 PHP-FPM 程序並提供有關 CPU 和記憶體使用情況以及其他重要指標的見解。它還可以在效能閾值超過時傳送警報和通知,幫助您主動識別和解決效能問題。

Datadog 是另一種流行的監控服務,可用於監控 PHP-FPM 程序。它提供對 PHP 應用程式效能的即時可見性,包括與 PHP-FPM 程序相關的詳細指標。它還可以配置為在效能閾值超過時傳送警報和通知。

除了監控 PHP-FPM 狀態外,最佳化 PHP-FPM 配置以獲得更好的效能也很重要。一個重要的配置引數是 pm.max_children 指令,它確定可以生成多少個 PHP-FPM 子程序來處理傳入請求。將此值設定得太高會導致資源耗盡,而設定得太低會導致由於排隊時間過長而導致效能下降。

另一個重要的配置引數是 pm.max_requests 指令,它確定每個 PHP-FPM 子程序在回收之前可以處理的最大請求數。將此值設定得太高會導致記憶體洩漏和不穩定,而設定得太低會導致不必要的程序回收和開銷。

在配置 PHP-FPM 時,還需要考慮伺服器上可用的資源。例如,如果您可用的記憶體有限,則可能需要降低 pm.max_children 的值以防止資源耗盡。同樣,如果您可用的 CPU 資源有限,則可能需要調整 pm.process_idle_timeout 指令以防止空閒程序消耗寶貴的 CPU 週期。

最後,需要注意的是,啟用 PHP-FPM 狀態也可能存在安全隱患。狀態頁面可以向攻擊者提供有價值的資訊,包括活動程序數和處理的總請求數。務必確保僅從受信任的 IP 地址訪問狀態頁面,並使用身份驗證和授權正確保護訪問。

監控和最佳化 PHP-FPM 的另一個重要方面是分析 PHP 錯誤日誌。PHP 錯誤日誌可以提供有關可能影響 PHP 應用程式效能和穩定性的潛在問題和錯誤的有價值的見解。透過分析這些日誌,您可以識別和診斷與 PHP-FPM 程序相關的問題,例如記憶體洩漏、段錯誤和其他錯誤。

您可以透過在 PHP 配置檔案中設定 error_log 指令來配置 PHP 錯誤記錄。預設情況下,PHP 將錯誤記錄到系統錯誤日誌,但您可以將其配置為將錯誤記錄到特定檔案或位置,以便於分析和監控。

除了錯誤日誌外,監控其他系統和應用程式日誌以查詢可能影響 PHP-FPM 程序的潛在問題也很重要。例如,您可能需要監控 Nginx 訪問日誌和錯誤日誌以識別與請求和響應相關的潛在問題。

最佳化 PHP-FPM 效能的另一種方法是使用操作碼快取。操作碼快取可以透過快取編譯後的 PHP 程式碼並減少每次請求編譯程式碼的開銷來顯著提高 PHP 效能。流行的操作碼快取解決方案包括 APCu、OpCache 和 XCache。

結論

在 Nginx 中啟用和監控 PHP-FPM 狀態頁面是維護健康 PHP 應用程式的一種簡單有效的方法。按照本文中概述的步驟,您可以輕鬆啟用 PHP-FPM 狀態頁面並使用您首選的工具進行監控。

更新於: 2023 年 5 月 15 日

3K+ 瀏覽量

開啟你的 職業生涯

透過完成課程獲得認證

開始學習
廣告