高并发系统设计二-如何提升系统性能

1、高并发系统设计的三大目标:高性能、高可用、可扩展

  • 性能,反应了系统的使用体验,例如,同样承担每秒一万次请求的两个系统,一个响应时间是毫秒级的,一个是秒级别,这样它们带给用户的体验肯定不同的。
  • 可用性表示系统可以为正常服务用户的时间。类比一下,还是两个承担每秒一万次请求的两个系统,一个系统可以全年不停机、无故障;另一个隔三差五的宕机维护
  • 可扩展性,流量一般分为平时流量和峰值流量,峰值流量可能会是平时流量的几倍甚至几十倍,在应对峰值流量时,就要在架构和方案上做更多的准备。比如双十一前的准备,明星事件等。易于扩展的系统能在较短的时间内迅速完成扩容,更加平稳的承担峰值流量。

2、性能优化的原则

  • 性能优化一定不能盲目,一定是问题导向的。如果脱离了实际问题,盲目的提早优化会增加系统的复杂度,并浪费人力,这种是不可取的。
  • 性能优化也遵循”八二原则“,即你可以用 20%的精力去解决 80% 的性能问题。所以我们在优化过程中需要抓住主要矛盾,优化主要的性能瓶颈
  • 性能优化需要有数据支撑。即了解你的优化让响应时间减少了多少,提升了多少吞吐量。
  • 性能优化的过程是持续的,需要不断的解决性能瓶颈。

3、性能的度量指标

我们需要有度量的指标,有了数据才能明确目前存在的性能问题,也能够用数据来评估性能优化的效果。

  • 平均值
  • 最大值
  • 分位值
    分位值有很多种,比如 90 分位、95 分位、75 分位。以 90 分位为例,我们把这段时间请求的响应时间从小到大排序,假如一共有 100 个请求,那么排在第 90 位的响应时间就是 90 分位值。分位值排除了偶发极慢请求对于数据的影响,能够很好地反应这段时间的性能情况,分位值越大,对于慢请求的影响就越敏感。

响应时间控制在多久比较合适呢?

从用户体验的角度来说:

  • 200ms是第一个分界点,感觉不到,体验极好
  • 1s是一个分界点,可以感觉到有延迟,但可以接受
  • 超过1s,有明显的等待,基本不能接受

健康系统的 99 分位值的响应时间通常通知在 200 ms 之内,不超过 1s 的请求占比要在 99.99% 以上。

4、高并发下的性能优化

1、提升系统的处理核心数

增加系统的并行处理能力

2、减少单次任务的响应时间

先看系统是 CPU 密集型还是 IO 密集型

CPU密集型系统中,需要处理大量的 CPU 运算,那么选用更高效的算法或者减少运算次数就是这类系统重要的优化手段。

IO 密集型系统指的是系统的大部分操作是在等待 IO 完成,

  • 磁盘 IO

  • 网络 IO

    我们熟知的系统大部分都属于 IO 密集型,比如数据库系统、缓存系统、Web 系统。这类系统的性能瓶颈可能出在系统内部,也可能是依赖的其他系统,而发现这类性能瓶颈的手段主要有两类:

  • 采用工具

    Linux 的工具集很丰富,完全可以满足你的优化需要,比如网络协议栈、网卡、磁盘、文件系统、内存,等等

  • 通过监控来发现性能问题。

    在监控中我们可以对任务的每一个步骤做分时的统计,从而找到任务的哪一步消耗了更多的时间。

5、总结

  • 数据优先,你做一个新的系统在上线之前一定要把性能监控系统做好;
  • 掌握一些性能优化工具和方法,这就需要在工作中不断的积累;
  • 计算机基础知识很重要,比如说网络知识、操作系统知识等等,掌握了基础知识才能让你在优化过程中抓住性能问题的关键,也能在性能优化过程中游刃有余
发布了57 篇原创文章 · 获赞 3 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/wmdkanh/article/details/105442111