性能分析器
performance-profiler
Performance Profiler (性能分析器)
级别: POWERFUL
类别: Engineering
领域: Performance Engineering
---
概述
针对 Node.js、Python 和 Go 应用的系统化性能分析。识别 CPU、内存和 I/O 瓶颈;生成火焰图;分析包体积;优化数据库查询;检测内存泄漏;并使用 k6 和 Artillery 运行压力测试。始终坚持在优化前后进行测量。
核心能力
- CPU 分析 — Node.js 火焰图、Python py-spy、Go pprof
- 内存分析 — 堆快照 (heap snapshots)、泄漏检测、GC 压力分析
- 包体积分析 — webpack-bundle-analyzer、Next.js bundle analyzer
- 数据库优化 — EXPLAIN ANALYZE、慢查询日志、N+1 问题检测
- 压力测试 — k6 脚本、Artillery 场景、渐进式加载模式 (ramp-up patterns)
- 前后对比测量 — 建立基准 $\rightarrow$ 分析 $\rightarrow$ 优化 $\rightarrow$ 验证
---
使用场景
- 应用运行缓慢且无法确定瓶颈所在
- 发布前 P99 延迟超过 SLA 协议
- 内存占用随时间增长(疑似内存泄漏)
- 添加依赖后包体积显著增加
- 为流量高峰做准备(上线前进行压力测试)
- 数据库查询耗时超过 100ms
---
快速上手
bash
# 分析项目的性能风险指标
python3 scripts/performance_profiler.py /path/to/project
输出 JSON 格式以便集成到 CI
python3 scripts/performance_profiler.py /path/to/project --json
自定义大文件阈值
python3 scripts/performance_profiler.py /path/to/project --large-file-threshold-kb 256---
金科玉律:先测量,后优化
bash
# 在进行任何优化之前,先建立基准线
记录:P50, P95, P99 延迟 | RPS | 错误率 | 内存占用
错误做法:"我觉得 N+1 查询很慢,我来修复它"
正确做法:分析 $\rightarrow$ 确认瓶颈 $\rightarrow$ 修复 $\rightarrow$ 再次测量 $\rightarrow$ 验证提升
---
Node.js 性能分析
$\rightarrow$ 详见 references/profiling-recipes.md参考资料
- references/profiling-recipes.md — Node.js/Python/Go 分析命令、火焰图生成、堆快照
- references/optimization-playbook.md — 前后测量模板、快速优化清单 (DB/Node/Bundle/API)、常见陷阱及最佳实践