性能优化概述 - 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数量越多, 串行化比重越低, 效果越好.

调优的层次

  1. 设计调优
    这一层面主要是规避问题, (比如通过依赖倒置将监测换成事件通知)
  2. 代码调优
  3. jvm调优
  4. 数据库调优
  5. 操作系统调优