关于 performance-profiler
performance-profiler 是面向 Node.js、Python 和 Go 应用的性能分析技能,指导开发者先建立基线,再定位瓶颈、实施改动并验证结果,涵盖 CPU、内存、数据库、构建包和负载。
主要功能
- 01CPU 分析与火焰图
- 02内存泄漏分析
- 03数据库查询优化
- 04前端构建包分析
- 05使用 k6 进行负载测试
- 06改动前后指标对比
适用场景
- 01排查原因不明的应用变慢
- 02追踪内存增长或疑似泄漏
- 03检查延迟是否符合 SLA
- 04在流量高峰前测试容量
安装
复制下面的命令,在终端中运行。
$
npx skills add https:/ / github.com/ borghei/ claude-skills --skill performance-profiler安装后在 Claude Code 中输入/performance-profiler确认已加载。
包含的文件
除 SKILL.md 外,安装时一起下载的参考资料和脚本。
references/cpu-and-memory-profiling.mddatabase-and-bundle.mdload-testing-and-methodology.mdscripts/benchmark_reporter.pybottleneck_detector.pyresource_analyzer.py详细介绍
性能分析器
对 Node.js、Python 和 Go 应用进行系统化性能分析。使用火焰图定位 CPU 瓶颈,通过堆快照检测内存泄漏,分析打包体积,优化数据库查询,检测 N+1 模式,并使用 k6 和 Artillery 运行负载测试。严格遵循先测量的方法:建立基线、定位瓶颈、修复并验证改进效果。
黄金法则 — 先测量: 分析 → 确认瓶颈 → 修复 → 再次测量 → 验证改进效果。每项优化都需要基线指标、分析器证据、修复措施、修复后指标和差值。完整规则见 references/cpu-and-memory-profiling.md。
核心能力
- CPU 分析 — Clinic.js/V8 火焰图(Node)、py-spy/cProfile/scalene(Python)、pprof(Go)、Chrome DevTools(浏览器)。
- 内存分析 — 堆快照及前后对比、GC 压力分析、泄漏检测、对象保留关系图。
- 数据库优化 — 读取 EXPLAIN ANALYZE 执行计划、检测并批处理 N+1 查询、慢查询日志、识别缺失索引、确定连接池大小。
- 打包分析 — webpack/Next.js 分析器、摇树优化、动态导入、识别大型依赖。
- 负载测试 — k6 渐增负载脚本、在 CI 中强制执行 SLA 阈值、跟踪 P50/P95/P99 延迟、模拟并发用户。
适用场景
- 应用运行缓慢,但不知道瓶颈在哪里。
- 发布前的 P99 延迟超过 SLA。
- 内存使用量随时间不断增长(疑似泄漏)。
- 添加依赖后打包体积增大。
- 为流量激增做准备(上线前进行负载测试)。
- 数据库查询耗时超过 100ms,或验证依赖升级后没有性能回退。
先澄清
开始分析前,请确认以下输入。如果其中某项缺失或含糊不清,且会影响结果,请询问;如果不会影响结果,则采用合理的默认值并说明所用选项。
- 运行时和症状: Node / Python / Go,以及 CPU / 内存 / 打包体积 / 查询 / 流量激增(用于选择分析器和工具链)。
- 基线和 SLA 目标: 当前数值以及需要达到的 P95/P99(或体积)阈值(先测量的方法需要两者才能验证差值)。
- 环境: 本地 / 预发布 / 生产环境决定了安全的分析方法,以及是否允许进行负载测试。
只询问与当前请求最相关的两三个输入,不要询问整个清单。如果用户希望立即获得结果,请直接给出结果,并在开头说明假设。
工具
| 工具 | 用途 | 命令 |
|---|---|---|
benchmark_reporter.py | 解析基准测试结果,并报告相对于阈值的回退或改进 | python scripts/benchmark_reporter.py results.json --fail-on-regression |
bottleneck_detector.py | 分析日志/追踪数据,标记高延迟、慢查询和慢跨度 | python scripts/bottleneck_detector.py trace.json --latency-threshold 200 |
resource_analyzer.py | 分析 CPU/内存/磁盘使用数据,并标记异常和趋势 | python scripts/resource_analyzer.py metrics.json --cpu-threshold 80 |
这三个工具都接受文件路径或表示标准输入的 -,并支持 --json。
参考资料
加载与任务相符的参考资料——保持此文件精简,按需查阅详细内容:
- references/cpu-and-memory-profiling.md — 完整的先测量再优化规则、Node.js CPU 性能分析(Clinic.js 火焰图、V8 CPU 性能分析文件)以及内存泄漏检测(Node 堆快照、Python memray/tracemalloc)。排查 CPU 或内存问题时阅读。
- references/database-and-bundle.md — EXPLAIN ANALYZE 工作流、N+1 检测模式和中间件脚本、Next.js 打包分析器设置、快速体积检查以及常见打包优化收益表。优化查询或打包体积时阅读。
- references/load-testing-and-methodology.md — 完整的 k6 负载测试脚本、前后测量模板、快速见效的优化清单、常见陷阱、最佳实践、故障排查表和成功标准。进行负载测试或记录优化成果时阅读。
范围与限制
此技能涵盖:
- 使用火焰图和堆快照对 Node.js、Python 和 Go 应用进行 CPU 和内存性能分析
- 数据库查询优化,包括解读 EXPLAIN ANALYZE、检测 N+1 问题和索引建议
- webpack 和 Next.js 项目的前端打包分析及体积缩减策略
- 使用 k6 进行负载测试的方法,包括渐增模式、阈值执行和 CI 集成
此技能不涵盖:
- 应用性能监控(APM)平台的设置和配置(Datadog、New Relic、Grafana)——请参阅
engineering/observability-designer - 基础设施层面的性能调优(内核参数、网络栈、容器资源限制)——请参阅
engineering/senior-devops - 面向安全的性能问题,例如 DDoS 缓解或速率限制——请参阅
engineering/senior-security - 移动应用性能分析(iOS Instruments、Android Profiler)——请参阅
engineering/senior-mobile
集成点
| 技能 | 集成方式 | 数据流 |
|---|---|---|
engineering/observability-designer | 性能分析结果用于指导可观测性仪表板设计;告警阈值根据性能分析基线推导 | 性能分析器基线和 SLA 阈值 → Prometheus/Grafana 告警规则和仪表板面板 |
engineering/ci-cd-pipeline-builder | k6 负载测试和打包体积检查作为 CI 流水线关卡集成 | k6 阈值配置和打包预算脚本 → CI 流水线阶段定义 |
engineering/database-designer | 查询优化建议为架构设计决策提供依据;索引建议反馈到架构迁移中 | EXPLAIN ANALYZE 结果和索引建议 → 架构迁移文件和索引定义 |
engineering/senior-backend | 后端架构决策纳入性能分析数据;通过负载测试验证连接池大小和缓存策略 | 性能分析报告和负载测试结果 → 架构决策记录和实施指南 |
engineering/tech-debt-tracker | 将性能回退和未解决的瓶颈作为技术债务事项跟踪,并记录其测量影响 | 前后测量报告和未解决的发现 → 已量化成本的技术债务待办事项 |
engineering/senior-frontend | 打包分析结果推动前端优化工作;代码拆分和延迟加载决策以性能分析数据为依据 | 打包分析器输出和 Lighthouse 得分 → 前端优化任务和组件重构计划 |
评论
支持 Markdown