03如何提升系统性能

1.高并发系统设计三大目标

高并发 高可用 可扩展
概念 通过设计手段让系统处理更多用户请求,承载更大流量,是一切架构设计的背景和前提
设计考虑因素 性能+可用性
性能:反映用户的使用体验
可用性:系统可以正常服务用户的时间
流量=平时流量+峰值流量
应对峰值流量时的快速扩展

2.性能优化原则

  1. 性能一定不能是盲目的,一定是问题导向的
    1. 盲目的优化增加系统复杂度,浪费时间
    2. 可能有损业务
  2. 性能遵循八二原则
    1. 用20%的精力解决80%的性能问题
    2. 一定要抓住主要矛盾
  3. 性能优化需要数据职称
    1. 及时了解优化指标
  4. 性能优化是持续的
    1. 出现性能问题的原因是很多方面的,持续优化

3.性能度量指标

有了数据才能明确目前存在的性能问题,明确性能的度量指标非常重要

吞吐量(请求数量)+响应时间(单次请求的开始至结束耗时)

度量性能指标通常是系统接口的响应时间,需要通过特征值代表一段时间的性能情况

平均值 可以反应一段时间的性能 敏感度较差 平均值只作为度量性能的参考
最大值 单位时间内请求最大值 过于敏感
分位值 将单位时间内的所有请求时间排序
90位的响应时间就是90分位
实际工作中使用最多
很好的反应这段时间的性能情况
分位越大,对慢请求就约敏感
image.png

经验:

接口在200ms以内感受不到延迟

1s以内,可以感受到延迟,但是能够接受

接口耗时不要超过1s

4.高并发下的性能优化

提供系统核心数:增加系统并行处理能力,一味的增加,可能会导致性能下降

压力测试时,需要找到系统的拐点,找到系统的瓶颈,持续优化系统性能

[图片上传失败...(image-d42c7a-1633760715912)]

减少单次任务响应时间:将任务划分成cpu密集型+io密集型

CPU密集型:高效算法+减少运算次数   工具:Profile+peff+eBPF

IO密集型:磁盘IO+网络IO  工具:Linux工具集+语言专属的内存分析工具+监控性能问题

找到性能瓶颈点后,对齐进行优化(对阵下药):

如果是数据库访问慢,那么就要看是不是有锁表的情况、是不是有全表扫描、索引加的是否合适、是否有 JOIN 操作、需不需要加缓存

如果是网络的问题,就要看网络的参数是否有优化的空间,抓包来看是否有大量的超时重传,网卡是否有大量丢包等

5.小结

任何优化需要数据优先

掌握性能优化的工具与方法,在工作中不断积累

基础知识很重要,可以在优化过程中抓住性能问题的关键

银弹:万金油,应对所有场面,解决所有问题

猜你喜欢

转载自juejin.im/post/7016962719676891150