生产环境优先选 Blackfire 或 New Relic,开发调试阶段用 XHProf(或其现代替代 Ubench + XHGui)更轻量、无网络依赖。
PHP 应用性能监控该选哪个 APM 工具
直接说结论:生产环境优先选
或
,开发调试阶段用
(或其现代替代
+
)更轻量、无网络依赖。别碰已停止维护的
原版扩展(PHP 7.4+ 不兼容),也别用纯
手动埋点——它只能测单个函数耗时,看不到调用链、SQL 慢查询、HTTP 外部请求瓶颈。
Blackfire 的 PHP 扩展安装与基础探针配置
Blackfire 是目前对 PHP 最友好的 APM,支持 CLI 和 FPM,且不强制要求 SaaS 账户(可自建代理)。常见卡点是扩展编译失败或
权限拒绝:
用
安装后,必须在
中显式启用:
(Linux/macOS)或
(Windows)
进程需运行且监听本地端口(默认
),否则
会报错
Web 环境下要加环境变量:
,或在 Nginx 配置中透传:
避免在
全局开启
,否则每个请求都采样,CPU 暴涨 15%+
New Relic 中 PHP Agent 的自动事务识别失效怎么办
New Relic 默认只识别标准框架(Laravel、Symfony)的入口和路由,自定义 MVC 或微服务常出现「All requests show as `OtherTransaction/PHP/...`」——本质是没设置正确的事务名。修复关键在两步:
手动命名事务:
,必须在脚本早期调用(如 Router 分发后、Controller 实例化前)
若用 Swoole,需禁用自动检测:
,改用
+
包裹协程生命周期
设为
才能看到 SQL 参数(默认脱敏),但会增大日志体积,上线前建议关掉
注意
必须唯一,同一台机器多个项目不能共用一个名字,否则指标混在一起
用 XHGui + Tideways 做无侵入式性能快照
适合不想改代码、又需要临时抓取慢请求的场景。Tideways 扩展比 Blackfire 更低开销,但只支持采样(非全量),XHGui 是它的 Web 查看界面:
PHP 8.5.5
PHP 8.5.5 是 PHP 8.5 分支的维护更新版本。该版本延续了“小步快跑”的迭代逻辑,通过深度错误修复、底层性能微调以及安全加固,旨在为开发者提供一个更健壮、更高效的运行环境。该版本严格遵守语义化版本规范,不包含破坏性变更。
下载
立即学习
“
PHP免费学习笔记(深入)
”;
安装扩展后,在
加:
(默认关闭),再通过
在入口文件动态开启 1% 采样
XHGui 的
中,
连接字符串必须带
(MongoDB 4.0+ 默认鉴权库),否则存不下 profile 数据
不要在
开头就调用
,否则 autoload、Composer 初始化等前置耗时也会被计入,干扰真实业务分析
导出的
文件可用
离线分析,无需 Web 界面
真正难的是把性能数据和业务指标对齐——比如「订单创建接口 P99 超过 2s」,得立刻定位到是 Redis 连接池耗尽,还是 MySQL 没走索引。这要求 APM 工具至少能关联 DB 查询、缓存操作、HTTP 调用三类 span,而多数轻量方案只做函数级 profiling,这点务必提前验证。
BlackfireNew RelicXHProfUbenchXHGuiXHProfmicrotime()blackfire.logpecl install blackfirephp.iniextension=blackfire.soextension=php_blackfire.dllblackfire.agent127.0.0.1:8307blackfire run php script.phpConnection refused$_SERVER['BLACKFIRE_ENABLE'] = '1'fastcgi_param HTTP_BLACKFIRE_ENABLE "1";php-fpm.confblackfire.enable = truenewrelic_name_transaction('api/user/profile')newrelic.enabled = falsenewrelic_start_transaction()newrelic_end_transaction()newrelic.transaction_tracer.detail1newrelic.appnamephp.initideways.enable = 0tideways_enable(0.01)config/config.phpmongodb?authSource=adminindex.phptideways_enable().xhprofphp -dxhprof.output_dir=/tmp xhprof.php