本文目录导读:

对于 Laravel 性能分析,不推荐使用 Xdebug,它更适合代码调试和单次请求的“慢日志”分析,而不是生产环境下的性能分析。
- Xdebug:主要用于调试(断点、单步跟踪),分析性能时会产生巨大的性能开销(通常拖慢 5-10 倍),且无法提供全貌数据(如响应时间分布、慢查询Top 10等)。
- 你需要的是:Profiler(性能分析器),用于收集、聚合和可视化性能数据。
推荐方案
根据你的环境(开发 / 生产)和需求,推荐以下工具:
开发环境:Laravel Debugbar + Laravel Telescope
- Laravel Debugbar:最常用的开发辅助工具,在页面底部展示请求时间、数据库查询(含具体SQL、耗时)、内存占用、视图渲染时间等。零配置,Composer 安装即可。
- Laravel Telescope:由 Laravel 官方出品,更强大的开发助手,记录所有请求、异常、查询、缓存操作、日志、模型事件等,适合在本地或开发服务器上长期开启。
生产环境(必须低开销、聚合数据):Laravel Pulse
- 官方推荐:Laravel Pulse 是 Laravel 11 及更高版本内置的生产环境性能监控工具。
- 特点:极低开销(异步写入,不阻塞请求),汇总展示慢请求、慢路由、慢查询、队列任务、内存占用等 Top 列表,按秒级粒度采样,不会拖慢你的应用。
第三方SaaS/全链路监控(推荐团队使用)
如果数据需要长期保存、报警或团队协作,使用专业APM(应用性能管理):
- Scout APM / AppSignal / New Relic / Datadog:安装对应的PHP扩展(非Xdebug)或Composer包,它们会自动注入代码,收集调用栈和耗时,能看到完整的请求瀑布图,精确到每个函数调用(类似Xdebug但性能影响极小,约1-3%)。
- Tideways(推荐):专门为PHP/Laravel设计的Profiler,免费版可本地使用,付费版支持生产环境,性能影响极低,自带UI。
命令行/离线分析(不需要UI):Laravel Horizon + 慢查询日志
- 如果你只需要分析慢请求,可以:
- 在
config/database.php中设置slowlog(MySQL)或log_queries(PostgreSQL)。 - 使用 Laravel Horizon 监控队列性能。
- 简单写一个中间件记录某个路由的
microtime(true)差值和内存。
- 在
你该选哪个?
| 场景 | 工具 | 原因 |
|---|---|---|
| 本地开发/调试 | Laravel Debugbar | 最快速、直观。 |
| 本地/测试服务器 | Laravel Telescope | 功能全面,自动记录所有事件。 |
| 生产环境(轻量) | Laravel Pulse | 官方生产级,低开销,秒级汇聚 Top 慢点。 |
| 生产环境(全链路) | Scout / AppSignal / Tideways | 需要专业排错、团队共享、报警。 |
| 临时分析单个请求 | Xdebug + cachegrind(仅限本地) | 用来调试具体慢在哪个函数,但别在生产用。 |
所以结论是:不要用Xdebug做常规Laravel性能分析,用 Debugbar / Telescope 开发,用 Pulse / APM 生产。