如何在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,问题排查用日志分析。