如何在CentOS上監控PHP性能
在CentOS系統中,監控PHP性能需結合系統資源監控、PHP進程追蹤、代碼級分析及APM工具等多維度手段,以下是具體方法:
top -p $(pidof php-fpm)
命令實時查看PHP-FPM進程的CPU、內存占用;htop
(需sudo yum install htop
安裝)提供更直觀的交互式界面,支持排序和過濾。ps aux | grep php-fpm
列出所有PHP-FPM進程,ps -eo pid,user,%cpu,%mem,cmd | grep php-fpm
可篩選并顯示進程的CPU/內存占比。/etc/php-fpm.d/www.conf
)中啟用狀態功能:pm.status_path = /status
,重啟服務后通過curl http://localhost/status
查看進程池狀態(活躍進程數、空閑進程數等)。vmstat 1 5
每秒顯示1次系統虛擬內存、進程、CPU使用情況;iostat -x 1
監控磁盤I/O負載;netstat -tulnp
查看網絡連接及監聽端口。sar -u 1 3
查看CPU歷史使用率,sar -r 1 3
查看內存使用趨勢,需安裝sysstat
包(sudo yum install sysstat
)。dstat
整合了vmstat、iostat等功能,dstat -cdngy
實時顯示CPU、磁盤、網絡等指標;glances
(sudo yum install glances
)提供跨平臺的系統監控,支持Web界面。Xdebug是PHP擴展,可生成函數調用跟蹤、執行時間及內存分配報告,適合深度代碼優化。
pecl install xdebug
安裝,編輯/etc/php.ini
添加:zend_extension=xdebug.so
xdebug.mode=profile,debug # 啟用性能分析與調試模式
xdebug.start_with_request=yes # 每次請求都啟動分析
xdebug.output_dir=/tmp/profiler # profiling文件輸出目錄
重啟PHP服務(systemctl restart php-fpm
)。kcachegrind
(sudo yum install kcachegrind
)打開生成的.xhprof
文件,查看函數調用樹、執行時間及內存占用;也可通過xhprof2flamegraph
工具轉換為火焰圖,直觀識別耗時函數。Blackfire提供代碼級性能分析、火焰圖及性能測試功能,適合生產環境。
curl -A "Composer" https://installer.blackfire.io/ | bash
安裝Blackfire Agent,配置/etc/blackfire/agent
文件并啟動服務。blackfire run php your_script.php
分析腳本,或在代碼中插入blackfire_probe()
函數進行實時監控。APM工具可實現全鏈路監控(代碼、數據庫、服務器),提供可視化報表及告警功能。
sudo yum install newrelic-php
安裝PHP Agent,通過nrsysmond-config --set license_key=YOUR_KEY
配置License,啟動服務(systemctl start newrelic-php
)。sudo yum install datadog-agent
安裝Agent,配置datadog.yaml
文件并啟用PHP集成(integrations/php.yaml
)。通過分析PHP日志定位錯誤及性能問題:
/var/log/php-fpm/error.log
,使用tail -f /var/log/php-fpm/error.log
實時查看錯誤信息;grep "PHP Fatal error" /var/log/php-fpm/error.log
篩選致命錯誤。$request_time
字段),識別慢請求。pecl install xhprof
,配置php.ini
并啟用,通過代碼調用xhprof_enable()
開始分析,結束后生成報告。以上方法可根據需求組合使用:日常監控用系統命令+APM工具,代碼優化用Xdebug/Blackfire,問題排查用日志分析。