{T}

高性能架构 学习笔记(第 8 部分)

九、常见问题与解决方案

问题原因解决方案
QPS 突然下降数据库慢查询、缓存失效优化 SQL、预热缓存
响应时间过长代码性能问题、网络延迟代码优化、CDN 加速
并发量上不去锁竞争、资源瓶颈异步处理、增加资源
系统频繁崩溃内存泄漏、资源耗尽内存管理、自动扩容
数据库连接池耗尽连接未释放、并发过高连接池优化、读写分离
缓存穿透大量无效请求布隆过滤器、空值缓存

十、学习要点总结

核心要点

  1. 三大性能指标

    • TPS:每秒事务数(反映业务性能)
    • QPS:每秒查询数(反映接口性能)
    • RPS:每秒请求数(等同 QPS)
  2. 指标关系

    plaintext
    QPS ≈ RPS > TPS
    一次事务包含多次查询
  3. 并发量计算

    plaintext
    并发量 = QPS × 平均响应时间
     
    经验数据:
    - 总用户 : 在线用户 = 10 : 1
    - 在线用户 : 峰值 QPS = 10 : 1
    - 峰值 QPS : 峰值 TPS = 5~10 : 1
  4. 性能优化策略

    • 缓存:多级缓存策略
    • 异步:消息队列解耦
    • 数据库:读写分离、分库分表
    • 架构:负载均衡、微服务
  5. 性能测试方法

    • 负载测试:预期负载下的性能
    • 压力测试:极限负载下的表现
    • 并发测试:并发处理能力
    • 耐久性测试:长期稳定性

十一、延伸学习资源

推荐书籍

  1. 《性能之巅》 - Brendan Gregg
  2. 《高性能MySQL》 - Baron Schwartz
  3. 《构建高性能Web站点》 - 郭欣
  4. 《大型网站技术架构》 - 李智慧

在线资源

  1. JMeter 官方文档https://jmeter.apache.org/
  2. Prometheus 监控https://prometheus.io/
  3. Grafana 可视化https://grafana.com/
  4. 性能测试最佳实践https://developer.mozilla.org/

实战练习

  1. 搭建监控系统:Prometheus + Grafana
  2. 性能压测:使用 JMeter 压测自己的项目
  3. 优化实践:优化一个慢查询接口
  4. 容量规划:计算项目所需的 QPS 和 TPS

附录:性能面试题精选

题目1:什么是 TPS 和 QPS?它们有什么区别?

答案要点

  • TPS:每秒事务数,反映完整业务流程
  • QPS:每秒查询数,反映接口/数据库压力
  • 区别:一次事务可能包含多次查询
  • 关系:QPS ≥ TPS

题目2:如何计算系统的并发量?

答案要点

plaintext
并发量 = QPS × 平均响应时间
 
示例:
QPS = 10,000
平均响应时间 = 0.2 秒
并发量 = 10,000 × 0.2 = 2,000

题目3:如何设计一个支持 100万 QPS 的系统?

答案要点

  1. 架构层面:负载均衡、微服务、读写分离
  2. 缓存层面:多级缓存、CDN
  3. 数据库层面:分库分表、索引优化
  4. 应用层面:异步处理、消息队列
  5. 基础设施:自动扩缩容、高可用

笔记整理完成!

这份笔记详细讲解了高性能架构的核心概念、性能指标、计算方法、监控实战和优化策略,并结合真实案例和代码示例,帮助理解高性能架构设计的核心思想。建议结合实际项目进行性能测试和优化实践。