03 如何提升系统性能?

2020-02-06  本文已影响0人  浥羽醉悠扬

高并发系统设计的三大目标:高性能、高可用、可扩展
高并发承担更大的流量。性能反映了系统的使用体验。可用性表示系统可以正常服务用户的时间

性能优化原则

性能的度量指标

一般来说,度量性能的指标是系统接口的相应时间,但是单次的相应时间是没有意义的,需要知道一顿时间的性能情况是什么样的。多以,我们需要收集这段时间的响应数据,然后依据一些统计方法计算出特征值,这些特征值就能够代表这段时间的性能情况。我们常见的特征值有以下几类。

之前提到,脱离了并发来谈性能是没有意义的,我们通常使用吞吐量或者响应时间来度量并发和流量,使用吞吐量地方情况会更多一些。

从用户体验的角度来看,200ms是第一个分界点:接口的响应时间在200ms之内,用户是感觉不到延迟的。1s是另外一个分界点,响应时间在1s以内时,感受是可以接受的。超过1s之后用户会有明显等待的感觉,等待时间越长,体验越差。所以响应时间通常要控制在200ms以内,而不超过1s的请求占比要在99.99%以上

高并发下的性能优化

主要有两种思路:一种是提高系统的处理核心数,另一种是减少单次任务的响应时间。

IO密集型系统指的是系统的大部分操作是在等待io完成,这里的IO指的是磁盘IO和网络IO。我们熟知的系统大部分属于IO密集型,比如数据库系统、缓存系统、web系统。这类系统的性能瓶颈可能出现在系统内部,也可能是依赖的其他系统
,而发现这类性能瓶颈的手段主要有两类。
1.采用工具,Linux的工具集很丰富,完全可以满足你的优化需要,比如网络协议栈、网卡、磁盘、文件系统、内存等等。这些工具的用法很多,你可以在排查问题的过程中逐渐几类。
2.可以通过监控来发现性能问题。

如果找到了系统的瓶颈点,我们要如何优化呢?优化方案会随着问题的不同而不同。比如说,如果是数据库访问慢,那么就要看是不是有锁表的情况、是不是有全表扫描、索引加的是否合适、是否有join操作。需不需要加缓存等等;如果是网络问题,就要看网络的参数是否有优化空间,抓包来看是否有大量的超时重传,网卡是否有大量丢包等。

业务价值->承载高并发->性能优化。一切的前提是业务价值需要。如果没有足够的价值,那么可读性才是第一,性能在需要的地方是No.1,但不需要的地方可能就是倒数第一.

上一篇下一篇

猜你喜欢

热点阅读