本文目录导读:

PHP 性能基准测试工具可以分为几大类,根据你的需求(框架还是代码段、本地还是CI、是否需要火焰图)选择合适的工具。
以下是目前最主流、最实用的 PHP 性能测试工具清单:
代码级微基准(测试单个函数/代码段)
这类工具适合测试某个算法或函数的执行时间和内存占用。
-
PHPBench
- 定位:目前最专业、最权威的 PHP 微基准测试框架。
- 特点:支持通过注解(Attribute)批量运行测试,自动计算标准差、变异系数,生成漂亮的 HTML 报告,并支持基线对比(比较不同版本的性能),它是首选。
- 使用:通过 Composer 安装,编写测试类,执行
vendor/bin/phpbench run。
-
Blackfire(重点在于分析)
- 定位:虽然它主要是性能剖析(Profiling)工具,但也是权威基准测试工具。
- 特点:能精确测量每个函数的调用次数、耗时和内存,它的“Builds”功能支持在 CI 中比较代码提交前后的性能差异(性能回归测试),配套浏览器插件使用。
-
Xdebug + PhpStorm Profiler
- 定位:开发环境的深度剖析。
- 特点:Xdebug 3.x 自带的开发模式可以生成性能文件(cachegrind),在 PhpStorm 中直接查看火焰图和函数调用链,但会显著拖慢执行速度,适合找瓶颈,不适合做精确的时间基准。
HTTP 层/全栈基准(测试整个请求响应)
这类工具不关心代码内部,只关心“从发请求到收到响应”的总耗时,常用于测试 Laravel、Symfony 等框架的整体性能。
-
ApacheBench (ab)
- 定位:最基础的命令行压测工具,Apache 自带。
- 特点:简单快速,
ab -n 1000 -c 100 https://example.com/即可,适合快速看 QPS(每秒查询数)和延迟分布,缺点是单机压测时容易受ulimit(文件描述符限制)影响。
-
wrk / wrk2
- 定位:更现代的 HTTP 压测工具,基于 C 语言。
- 特点:性能远高于
ab,支持 LuaJIT 脚本,可以模拟复杂的请求(如带 token 的 POST 请求),在 Linux/macOS 上非常流行。
-
k6
- 定位:现代化、开源、面向开发者的负载测试工具。
- 特点:使用 JavaScript 编写测试脚本,对 CI/CD 集成非常友好(Docker 化),甚至提供 SaaS 云服务(Grafana Cloud k6),适合做完整的场景压测(比如模拟 100 个用户登录、浏览、下单)。
-
JMeter
- 定位:老牌重型压测工具(Java 开发)。
- 特点:功能强大,支持图形界面(GUI)录制脚本,支持分布式压测,但资源占用大,配置复杂,如果团队已有 Java 技术栈,可以用它;如果只是纯 PHP 团队,建议用 k6。
应用性能监控(APM)— 生产环境基准
这些工具用于监控线上真实用户的访问性能。
- Tideways
- 定位:专门为 PHP 打造的 APM 工具。
- 特点:轻量级,自带 PHP 原生扩展(Tideways Extension),能准确捕捉线上真实请求的性能瓶颈。
- Datadog APM / New Relic / Sentry Performance
- 定位:通用型 APM,支持 PHP。
- 特点:不仅追踪耗时,还追踪数据库查询(SQL)、Redis 调用和外部 API 耗时。
补充:如何正确做基准测试?(重要!)
使用工具只是第一步,PHP 环境的配置对测试结果影响巨大:
- 必须启用 OpCache:生产环境必须开启
zend_extension=opcache.so且opcache.enable=1,未开启 OpCache 的基准测试结果毫无意义,因为 PHP 每次请求都重新编译代码。 - 清除预热:第一次请求会触发类自动加载和框架初始化,数据会偏慢,测试前应先请求一两次,或者使用
PHPBench的--revs选项进行多次迭代取平均值。 - 禁用 Xdebug:测试代码性能时,必须禁用 Xdebug(尤其是
develop模式),它会让性能下降 30%-60%。 - 短尾测试:使用
ab这类工具时,如果没有设置-k(Keep-Alive),频繁的 TCP 握手会掩盖 PHP 本身的性能问题。
总结推荐
- 如果你只想测一个函数:直接用 PHPBench。
- 如果你想知道代码哪里慢(剖析):用 Blackfire(免费版够用)。
- 如果你想压测整个网页:用 wrk(本地)或 k6(CI 集成)。
- 如果你线上网站的接口突然变慢:接 Tideways。