性能优化概述 - linaGh/Reading-Notes GitHub Wiki
一般来说, 性能主要表现在一下几个方面
- 执行速度: rt
- 内存分配: 是否过多消耗内存或者存在内存泄漏
- 启动时间: 程序从运行到正常处理业务的时间
- 负载承受能力: 系统压力上升时, rt、qps的上升曲线是否平缓
定量测评指标:
- 执行时间
- CPU时间: 函数或线程占用cpu的时间
- 内存分配
- 磁盘吞吐量: I/O使用情况
- 网络吞吐量
- 响应时间
木桶原理与性能瓶颈
最有可能成为瓶颈的计算资源有:
- 磁盘I/O
- 网络操作
- CPU
- 异常
- 数据库
- 锁竞争
- 内存(一般情况下可不考虑)
Amdahl定律:
加速比定义: 加速比 = 优化前系统耗时/优化后系统耗时
加速比与系统并行度和处理器数量的关系:
Speedup =< 1/(F + (1-F)/N), 则加速比与系统的串行化率成反比 (见page4)
⚠️使用多核cpu对系统优化时,优化的效果取决于cpu的数量和系统中的串行化程序的比重. cpu数量越多, 串行化比重越低, 效果越好.
调优的层次
- 设计调优
这一层面主要是规避问题, (比如通过依赖倒置将监测换成事件通知) - 代码调优
- jvm调优
- 数据库调优
- 操作系统调优