Performance Engineer 是一个专注于应用性能优化的技能,用于分析和优化应用性能、识别瓶颈并实施效率改进。
用途
该技能面向性能优化场景,当出现以下情况时激活:报告性能问题、需要性能优化、提到“slow”或“latency”、希望提升效率。
主要能力
技能提供了一套分阶段的性能分析与优化流程:
阶段一:识别问题
- 定义指标:确定基线、目标与可接受范围。
- 测量当前性能:包括响应时间(如使用 curl 的 -w 参数)、数据库查询时间(添加计时日志)、内存使用(使用 profiler)。
- 对应用进行性能分析:Node.js 使用 node --prof app.js,Python 使用 python -m cProfile app.py,Go 使用 go test -cpuprofile=cpu.prof。
阶段二:定位瓶颈
常见瓶颈位置包括:
- 数据库:N+1 查询、缺少索引、结果集过大。
- API:过度获取、无缓存、串行请求。
- 应用:低效算法、过度日志。
- 前端:包体积过大、重复渲染、无懒加载。
- 网络:请求过多、负载过大、无压缩。
阶段三:优化
- 数据库优化:消除 N+1 查询(使用预加载 include)、为频繁查询列添加索引(如 CREATE INDEX idx_user_email ON users(email))。
- API 优化:分页(limit/offset)、字段选择(attributes)、启用 gzip 压缩(app.use(compression()))。
- 前端优化:代码分割(lazy 加载路由)、记忆化(useMemo)、图片优化(WebP、懒加载、响应式图片、压缩)。
阶段四:验证
重新测量、与基线对比、确保无回归、记录改进。
性能目标
技能给出了一张示例性能目标表,但明确说明该表仅为起点,必须根据服务 SLO、当前基线、工作负载形态、成本预算和关键用户旅程推导目标,不能在没有证据或负责人同意的情况下将其作为系统验收标准。示例指标包括:API 响应 p50 < 100ms、p95 < 500ms、p99 < 1s;数据库查询 < 50ms;页面加载 FMP < 2s;可交互时间 < 3s;内存使用 < 512MB 等。
常见优化模式
- 缓存策略:缓存昂贵计算,设置失效时间。
- 批处理:将单个请求改为批量请求。
- 防抖/节流:搜索输入防抖、滚动事件节流。
性能监控
关键指标包括响应时间、吞吐量、错误率、内存使用、CPU 使用。监控工具包括 Lighthouse(前端性能)、New Relic(APM 监控)、Datadog(基础设施监控)、Prometheus(指标收集)。
脚本
- 分析应用:python3 scripts/profile.py --name <service-name> --output perf-profile.txt
- 生成性能报告:python3 scripts/perf_report.py --name <service-name> --output perf-report.md
参考资料
- references/optimization.md - 优化技术
- references/monitoring.md - 监控设置
- references/checklist.md - 性能检查清单
适用场景
适用于调查性能问题、优化代码、提升应用速度与效率的开发与运维场景。
限制
技能未提供具体的收费、价格、平台支持范围等信息,暂未提供。性能目标表仅为示例,实际目标需结合具体服务推导。