性能优化方向

性能优化原则

  • 性能优化不可盲目,徒增系统复杂度;
  • 抓住系统的主要性能瓶颈点;
  • 通过数据支撑验证优化效果。

|300

性能优化的度量指标

吞吐量(QPS/TPS)、延迟、分位数(TP99)、CPU、内存等。

性能优化思路

  • 用户体验优化。让用户有更好的性能体验。
  • 第一层:数据中心优化。类似 CDN 就近服务。
  • 第二层:硬件优化。
  • 第三层:操作系统优化。
  • 第四层:虚拟机优化。
  • 第五层:基础组件优化。
  • 第六层:架构优化。
  • 第七层:代码优化。

一些实际优化:

  1. 采用非阻塞的 rpc 调用(高效的远端请求模式,采用容器的覆盖网络我认为也算)
  2. 将计算密集和 io 密集的的逻辑分割开,单独线程池,调整线程比例压榨单机性能(或者说找拐点)。
  3. 做缓存,io 耗时的缓存和计算耗时的缓存(多级缓存,数据压缩降低带宽)。
  4. 采用享元模式,用好对象池和本地线程空间,尽量减少对象创建与销毁的开销,提高复用。
  5. 业务拆分,像状态变化后的外部系统通知,业务监控,es 或 solr 等副本数据同步等操作,无需在主流程中做的事都拆掉。走 canal 监听表数据变化,推 mq 保最终一致的方式从业务项目完全解偶出来。
  6. fork_join,分而治之的处理大任务。并发编程,采用多线程并行的方式处理业务。(规避伪共享,减小锁力度,采用合适的锁)。
  7. 数据库配置优化,查询优化。(存储优化比较头疼,毕竟不按业务拆单点跑不掉,单点性能就要命。基本只能内存库先行,后台同步数据做持久。然后内存库多副本,自修复,保留一系列自修复失败的修复手段)

参考链接