高性能架构 学习笔记(第 8 部分)
九、常见问题与解决方案
| 问题 | 原因 | 解决方案 |
|---|---|---|
| QPS 突然下降 | 数据库慢查询、缓存失效 | 优化 SQL、预热缓存 |
| 响应时间过长 | 代码性能问题、网络延迟 | 代码优化、CDN 加速 |
| 并发量上不去 | 锁竞争、资源瓶颈 | 异步处理、增加资源 |
| 系统频繁崩溃 | 内存泄漏、资源耗尽 | 内存管理、自动扩容 |
| 数据库连接池耗尽 | 连接未释放、并发过高 | 连接池优化、读写分离 |
| 缓存穿透 | 大量无效请求 | 布隆过滤器、空值缓存 |
十、学习要点总结
核心要点
-
三大性能指标:
- TPS:每秒事务数(反映业务性能)
- QPS:每秒查询数(反映接口性能)
- RPS:每秒请求数(等同 QPS)
-
指标关系:
plaintextQPS ≈ RPS > TPS 一次事务包含多次查询 -
并发量计算:
plaintext并发量 = QPS × 平均响应时间 经验数据: - 总用户 : 在线用户 = 10 : 1 - 在线用户 : 峰值 QPS = 10 : 1 - 峰值 QPS : 峰值 TPS = 5~10 : 1 -
性能优化策略:
- 缓存:多级缓存策略
- 异步:消息队列解耦
- 数据库:读写分离、分库分表
- 架构:负载均衡、微服务
-
性能测试方法:
- 负载测试:预期负载下的性能
- 压力测试:极限负载下的表现
- 并发测试:并发处理能力
- 耐久性测试:长期稳定性
十一、延伸学习资源
推荐书籍
- 《性能之巅》 - Brendan Gregg
- 《高性能MySQL》 - Baron Schwartz
- 《构建高性能Web站点》 - 郭欣
- 《大型网站技术架构》 - 李智慧
在线资源
- JMeter 官方文档:https://jmeter.apache.org/
- Prometheus 监控:https://prometheus.io/
- Grafana 可视化:https://grafana.com/
- 性能测试最佳实践:https://developer.mozilla.org/
实战练习
- 搭建监控系统:Prometheus + Grafana
- 性能压测:使用 JMeter 压测自己的项目
- 优化实践:优化一个慢查询接口
- 容量规划:计算项目所需的 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 的系统?
答案要点:
- 架构层面:负载均衡、微服务、读写分离
- 缓存层面:多级缓存、CDN
- 数据库层面:分库分表、索引优化
- 应用层面:异步处理、消息队列
- 基础设施:自动扩缩容、高可用
笔记整理完成!
这份笔记详细讲解了高性能架构的核心概念、性能指标、计算方法、监控实战和优化策略,并结合真实案例和代码示例,帮助理解高性能架构设计的核心思想。建议结合实际项目进行性能测试和优化实践。