T12 优化与维护 ⭐⭐⭐⭐ ⏱ 约 60 分钟

性能优化

Performance Optimization

💡 适用场景: 性能调优、资源优化

📄 T12: Performance Optimization(性能优化) 其他

⭐⭐⭐⭐ 中高级 | 系统级性能分析和优化

💡 核心概念 核心概念

性能优化的步骤:

  1. 测量 - 确定当前性能
  2. 分析 - 找到瓶颈
  3. 优化 - 改进瓶颈部分
  4. 验证 - 确认改进有效

不同层面的性能:

  • 响应时间 - 用户体验,目标<200ms
  • 吞吐量 - 系统处理能力,QPS
  • 并发 - 同时处理的用户数
  • 资源使用 - CPU、内存、磁盘I/O

最佳实践 最佳实践

🎯 原则1: 从顶层开始优化

  • 架构级优化 > 代码级优化
  • 缓存 > 数据库优化
  • 异步 > 同步
  • 定向优化,不要过度优化

🎯 原则2: 使用profiling工具

  • 不要基于猜测优化
  • 用工具找真正的瓶颈
  • 关注hotspot函数

🎯 原则3: 缓存策略

  • 多层缓存(内存、Redis、浏览器)
  • 缓存穿透、击穿、雪崩防护
  • 定期清理和更新

🎯 原则4: 异步处理

  • 长操作应该异步
  • 使用消息队列
  • 使用工作线程池

📄 常见性能优化场景 其他

场景1: 应用级性能分析

Prompt:

我的应用性能下降,请帮我诊断。

现象:
- 平均响应时间:[时间]
- 99%响应时间:[时间]
- 目标:[目标时间]

已知:
- CPU使用率:[百分比]
- 内存使用:[大小]
- 数据库查询数:[数字]

关键操作的[timings]:
[操作1]: [时间]
[操作2]: [时间]
[操作3]: [时间]

问题:
1. 瓶颈在哪里?
2. 应该profiling什么?
3. 怎样优化?

场景2: 缓存策略设计

Prompt:

请为我设计缓存策略。

应用特点:
- 热数据:[说明]
- 更新频率:[频率]
- 一致性要求:[要求]

缓存候选数据:
1. [数据1]: 更新频率[频率], 访问频率[频率]
2. [数据2]: ...

需要考虑:
1. 缓存层次(内存、Redis、CDN)
2. 缓存更新策略(TTL、事件驱动、LRU)
3. 缓存穿透、击穿、雪崩防护
4. 数据一致性处理

请给出缓存设计方案。

场景3: 并发性能优化

Prompt:

我的系统在高并发下性能下降。

性能指标:
- 单用户:[性能正常]
- 1000并发:[性能下降]
- 10000并发:[不可用]

瓶颈分析:
- CPU:[使用率]
- 内存:[使用率]
- 数据库连接:[使用数]
- 线程:[线程数]

代码热点:
[并发相关的代码]

问题:
1. 为什么并发下性能下降这么多?
2. 瓶颈是什么?
3. 怎样优化到10000并发?

📄 性能优化工具 其他

工具 用途 特点
JProfiler Java性能分析 可视化、实时
perf Linux性能分析 底层、功能强大
Flame Graphs CPU使用分析 直观展示
New Relic APM监控 全栈视图

📋 性能优化检查清单 检查清单

📄 🎓 下一步 其他

  • 性能优化涉及数据库 → T10: Query Optimization
  • 优化代码审查 → T07: Code Review

💬 Prompt 模板 (3)

性能优化 - Prompt 1
详情
我的应用性能下降,请帮我诊断。

现象:
- 平均响应时间:[时间]
- 99%响应时间:[时间]
- 目标:[目标时间]

已知:
- CPU使用率:[百分比]
- 内存使用:[大小]
- 数据库查询数:[数字]

关键操作的[timings]:
[操作1]: [时间]
[操作2]: [时间]
[操作3]: [时间]

问题:
1. 瓶颈在哪里?
2. 应该profiling什么?
3. 怎样优化?
性能优化 - Prompt 2
详情
请为我设计缓存策略。

应用特点:
- 热数据:[说明]
- 更新频率:[频率]
- 一致性要求:[要求]

缓存候选数据:
1. [数据1]: 更新频率[频率], 访问频率[频率]
2. [数据2]: ...

需要考虑:
1. 缓存层次(内存、Redis、CDN)
2. 缓存更新策略(TTL、事件驱动、LRU)
3. 缓存穿透、击穿、雪崩防护
4. 数据一致性处理

请给出缓存设计方案。
性能优化 - Prompt 3
详情
我的系统在高并发下性能下降。

性能指标:
- 单用户:[性能正常]
- 1000并发:[性能下降]
- 10000并发:[不可用]

瓶颈分析:
- CPU:[使用率]
- 内存:[使用率]
- 数据库连接:[使用数]
- 线程:[线程数]

代码热点:
[并发相关的代码]

问题:
1. 为什么并发下性能下降这么多?
2. 瓶颈是什么?
3. 怎样优化到10000并发?