性能优化 performance

这是一个全面的性能优化技能,专注于软件应用的性能分析、瓶颈识别、内存泄漏检测、数据库查询优化、前端性能提升(包括核心网页指标LCP/FID/CLS)、负载与压力测试、容量规划以及React等框架的特定优化。适用于开发人员、测试工程师和DevOps专家进行性能调优、监控设置和性能审计,确保应用在高并发下稳定高效运行。关键词:性能分析、瓶颈识别、内存泄漏、数据库优化、前端性能、负载测试、压力测试、容量规划、React优化、核心网页指标、性能监控、代码优化。

测试 0 次安装 0 次浏览 更新于 2/28/2026

name: performance description: 全面的性能专家,涵盖分析、优化、负载测试和框架特定性能。适用于识别瓶颈、优化代码、进行负载测试、分析核心网页指标、修复内存泄漏或改进所有层级(应用程序、数据库、前端)的应用程序性能。包括React特定的优化模式。 author: Joseph OBrien status: unpublished updated: ‘2025-12-23’ version: 1.0.1 tag: skill type: skill

性能

此技能提供全面的性能能力,包括性能分析、优化、负载测试、压力测试、容量规划和框架特定的性能模式。

何时使用此技能

  • 识别性能瓶颈时
  • 调查内存泄漏或高内存使用率时
  • 优化缓慢的数据库查询时
  • 分析前端性能(核心网页指标、包大小)时
  • 设置性能监控时
  • 部署前进行性能审计时
  • 创建负载测试场景时
  • 分析压力下的性能时
  • 识别负载下的系统瓶颈时
  • 规划容量时
  • 设置性能基准时
  • 优化React渲染性能时
  • 减少包大小时
  • 改进核心网页指标(LCP、FID、CLS)时
  • 修复React应用中的内存泄漏时
  • 实现高级React模式时

此技能的功能

  1. 性能分析:分析CPU、内存和网络性能
  2. 瓶颈识别:精确定位特定性能问题
  3. 内存分析:检测内存泄漏和高内存使用率
  4. 数据库优化:识别慢查询和优化机会
  5. 前端分析:分析包大小、渲染性能、核心网页指标
  6. 负载测试:创建和执行负载测试场景
  7. 压力测试:识别崩溃点和极限
  8. 容量规划:分析可扩展性和容量
  9. React优化:优化React渲染、包大小和核心网页指标
  10. 监控设置:创建性能监控和告警

如何使用

分析性能

分析此应用程序的性能并识别瓶颈
分析内存使用情况并查找泄漏

创建负载测试

为此API创建负载测试场景
测试1000个并发用户下的性能

优化React应用

优化此React应用以获得更好的性能
分析包大小并减小它

分析领域

应用程序性能

要跟踪的指标:

  • 响应时间和延迟
  • 吞吐量(每秒请求数)
  • 错误率
  • CPU利用率
  • 内存使用模式

常见问题:

  • 缓慢的API端点
  • 高CPU使用率
  • 内存泄漏
  • 低效算法
  • 阻塞操作

数据库性能

分析重点:

  • 慢查询识别
  • 缺失索引
  • N+1查询问题
  • 连接池耗尽
  • 锁争用

工具:

  • 查询执行计划(EXPLAIN ANALYZE)
  • 慢查询日志
  • 数据库监控工具
  • 连接池指标

前端性能

核心网页指标:

  • 最大内容绘制(LCP)< 2.5秒
  • 首次输入延迟(FID)< 100毫秒
  • 累积布局偏移(CLS)< 0.1

包分析:

  • 包大小优化
  • 代码分割机会
  • 未使用代码移除
  • 资源优化

React性能

渲染优化:

  • 使用React.memo进行组件记忆化
  • 使用useMemo进行昂贵计算
  • 使用useCallback进行函数记忆化
  • 长列表虚拟化
  • 代码分割和懒加载

包优化:

  • 按路由进行代码分割
  • 组件懒加载
  • 摇树优化移除未使用代码
  • 动态导入
  • 包分析

性能测试

负载测试

目的:测试系统在预期负载下的表现 指标:响应时间、吞吐量、错误率 工具:k6、Artillery、JMeter、Locust

示例(k6):

import http from 'k6/http';
import { check } from 'k6';

export const options = {
  stages: [
    { duration: '2m', target: 100 }, // 逐步增加
    { duration: '5m', target: 100 }, // 保持在100
    { duration: '2m', target: 200 }, // 逐步增加到200
    { duration: '5m', target: 200 }, // 保持在200
    { duration: '2m', target: 0 },   // 逐步减少
  ],
};

export default function() {
  const res = http.get('https://api.example.com/users');
  check(res, {
    '状态码是200': (r) => r.status === 200,
    '响应时间 < 500ms': (r) => r.timings.duration < 500,
  });
}

压力测试

目的:寻找崩溃点 指标:最大容量、故障点 方法:逐步增加负载直至故障

容量规划

目的:确定资源需求 指标:资源利用率、扩展需求 分析:当前容量与未来需求对比

分析流程

1. 建立基线

测量当前性能:

  • 响应时间百分位数(p50、p90、p95、p99)
  • 吞吐量指标
  • 错误率
  • 资源利用率(CPU、内存、网络)

设定目标:

  • 定义可接受的性能阈值
  • 设定SLA目标
  • 识别关键路径

2. 识别瓶颈

分析技术:

  • CPU分析以找到热点函数
  • 内存分析以找到泄漏
  • 网络分析用于API调用
  • 数据库查询分析

瓶颈模式:

  • 单个慢操作(算法复杂度)
  • 许多小操作(N+1查询)
  • 资源争用(锁、连接池)
  • 内存泄漏(逐渐增长)

3. 分析根本原因

调查步骤:

  1. 识别慢操作
  2. 测量其性能
  3. 分析其慢的原因
  4. 检查优化机会
  5. 验证修复是否改善了性能

4. 提供优化建议

建议应包括:

  • 具体的代码更改
  • 优化前后的性能指标
  • 实施步骤
  • 预期影响
  • 风险评估

示例

示例1:API性能分析

输入:API端点 /api/users 缓慢

输出

## 性能分析:/api/users

### 当前性能
- **平均响应时间**:2.3秒
- **P95响应时间**:4.1秒
- **吞吐量**:45 请求/秒
- **错误率**:2%

### 已识别的瓶颈
**问题**:用户数据获取中的N+1查询问题
- **位置**:`src/routes/users.js:34`
- **模式**:一个查询获取用户,然后N个查询获取每个用户的帖子

### 根本原因
```javascript
// 当前实现
const users = await db.users.findAll();
for (const user of users) {
  user.posts = await db.posts.findByUserId(user.id); // N+1 查询
}

优化

// 使用预加载优化
const users = await db.users.findAll({
  include: [{ model: Post, as: 'posts' }] // 使用JOIN的单次查询
});

预期影响

  • 响应时间:2.3秒 → 0.3秒(87% 改进)
  • 数据库查询:101 → 1(99% 减少)
  • 吞吐量:45 → 200+ 请求/秒

### 示例2:React组件优化

**输入**:优化昂贵的组件

**输出**:
```markdown
## React性能:组件优化

### 问题
组件在每次父组件更新时都会重新渲染,即使props没有改变。

### 优化
```javascript
// 之前:不必要地重新渲染
function ExpensiveComponent({ data, config }) {
  const processed = data
    .filter(item => item.active)
    .map(item => processComplex(item, config));

  return <Chart data={processed} />;
}

// 之后:记忆化以防止不必要的重新渲染
const ExpensiveComponent = React.memo(({ data, config }) => {
  const processed = useMemo(() => {
    return data
      .filter(item => item.active)
      .map(item => processComplex(item, config));
  }, [data, config]);

  return <Chart data={processed} />;
});

影响

  • 重新渲染减少:100% → 5%
  • 性能提升:80% 更快

## 参考文件

对于框架特定的性能模式和详细指导,根据需要加载参考文件:

- **`references/framework_patterns.md`** - Node.js、React、数据库、API、前端和监控策略的性能模式(来自性能分析)
- **`references/react_patterns.md`** - React特定的性能优化模式、记忆化策略、包优化和核心网页指标改进
- **`references/load_testing.md`** - 负载测试和压力测试模式、工具、场景和容量规划策略
- **`references/PERFORMANCE_ANALYSIS.template.md`** - 性能分析报告模板,包含负载概况、瓶颈和建议

当为特定框架分析性能或进行负载测试时,加载相应的参考文件。

## 最佳实践

### 性能分析方法

1. **先测量**:始终建立基线指标
2. **优化前先分析**:识别实际的瓶颈
3. **逐步优化**:一次只做一个更改
4. **验证改进**:每次优化后测量
5. **持续监控**:设置持续的性能监控

### 常见优化

**应用程序:**
- 优化算法(降低复杂度)
- 添加缓存层
- 使用连接池
- 实现请求批处理
- 添加速率限制

**数据库:**
- 添加适当的索引
- 优化查询(避免N+1)
- 使用查询结果缓存
- 实现读副本
- 优化连接池

**前端:**
- 代码分割和懒加载
- 图片优化
- 包大小减少
- 最小化重新渲染
- 优化资源加载

**React:**
- 优化前先测量
- 策略性地记忆化(不要过度记忆化)
- 按路由和功能进行代码分割
- 按需懒加载组件
- 监控性能指标

### 监控设置

**关键指标:**
- 响应时间百分位数
- 错误率
- 吞吐量
- 资源利用率
- 自定义业务指标

**告警:**
- 性能下降时告警
- 错误率激增时告警
- 资源耗尽时告警
- SLA违规时告警

## 相关用例

- 性能审计
- 优化项目
- 容量规划
- 性能回归检测
- 生产环境性能监控
- 负载测试分析
- React应用优化
- 包大小减少
- 核心网页指标改进
- 内存泄漏修复
- 渲染性能优化