1. 使用系统自带命令行工具监控基础性能
通过Linux系统自带的命令行工具,可快速获取PHP-FPM进程的CPU、内存、连接等基础性能指标,适合日常快速排查:
sudo systemctl status php-fpm(若为systemd管理)。top -p $(pgrep php-fpm)(top)或htop -p $(pgrep php-fpm)(htop,需安装)过滤出PHP-FPM进程。ps aux | grep php-fpm。sudo ss -tulnp | grep php-fpm(推荐,更现代)或netstat -tulnp | grep php-fpm。/var/log/php-fpm.log或/var/log/php/{version}-fpm.log),获取错误、警告或慢请求信息。示例命令:sudo tail -f /var/log/php-fpm.log。2. 启用PHP-FPM内置状态页面获取实时指标
PHP-FPM内置状态页面可提供更详细的运行指标(如活跃进程数、空闲进程数、处理请求总数、慢请求数等),需先在配置文件中启用:
/etc/php/{version}/fpm/pool.d/www.conf),设置以下参数:pm.status_path = /status # 状态页面路径
ping.path = /ping # 健康检查路径(可选)
location /status {
fastcgi_pass 127.0.0.1:9000; # PHP-FPM监听地址
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
allow 127.0.0.1; # 仅允许本地访问(生产环境需限制IP)
deny all;
}
访问http://server-ip/status即可查看实时指标(如active processes、idle processes、total requests)。3. 利用第三方监控工具实现长期可视化与告警
第三方工具可实现PHP-FPM指标的长期收集、可视化及阈值告警,适合生产环境:
php-fpm-exporter(如wodby/php-fpm-exporter)采集PHP-FPM指标(如php_fpm_active_processes、php_fpm_idle_processes、php_fpm_requests_total),并存储到Prometheus时间序列数据库。PHP-FPM Exporter Dashboard),实现指标的可视化展示(如进程数趋势、请求量分布)。check process php-fpm with pidfile /run/php/php-fpm.pid
start program = "/usr/sbin/service php-fpm start"
stop program = "/usr/sbin/service php-fpm stop"
if cpu > 80% for 5 cycles then alert
if memory > 500 MB for 5 cycles then alert
check_php-fpm插件监控PHP-FPM状态页面的指标(如活跃进程数、慢请求数),设置阈值告警。4. 配置慢日志定位性能瓶颈
通过慢日志记录执行时间超过阈值的PHP请求,帮助定位性能问题(如慢SQL、复杂代码):
slowlog = /var/log/php-fpm/slow.log # 慢日志文件路径
request_slowlog_timeout = 10s # 执行时间超过10秒的请求记录为慢请求
tail或less命令查看慢日志内容,分析慢请求的执行时间、调用栈等信息。示例命令:sudo tail -f /var/log/php-fpm/slow.log。