聊聊性能 - 全链路压测overview

Posted 比昂日记

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了聊聊性能 - 全链路压测overview相关的知识,希望对你有一定的参考价值。

最近团队在做的比较重要的一件事就是全链路压测, 想用几篇文章来聊聊对于性能的思考,本文算是一个概述。


去年十一,高德地图突破一亿DAU,性能,稳定性,可用性对于用户来讲非常重要。


全链路压测是保障业务稳定性,用户体验的重要手段,从宏观角度,我觉得全链路压测的作用和意义可以抽象为3个: 发现问题,定位和止损问题,预见问题。


01

发现问题


如何有效识别线上问题?

现有的流程能够保证开发环节, 集成环节,预发灰度,线上; 由于真实的线上环境往往很复杂, 经常发生的一个问题是我们在现在测试,功能,性能等等, 线上还是出现问题。


全链路压测解题的角度是“真实的用户场景”和“真实的线上环境”。


线上无小事,直接针对线上必然会有一定风险,围绕这个问题,需要解决几个问题:

a. 数据构造,如何构造真实线上流量,引流,回放;(当然过程中很多问题需要解决,如何设置接口比例,

b. 流量识别,针对不同中间件标记压测流量,HTTP, RPC, MQ等如何识别压测流量;

c. 数据隔离,不污染线上数据,如存储、缓存、消息、日志等;

d. 施压环境,并发控制,请求效率,基于jmeter的BIO,还是Gatling的NIO,抑或是自己封装的IO模型, 不同的机房, 不同的CDN;

e. 第三方服务依赖


02

定位和止损问题


从工程效率的角度, 全链路压测需从业务要对线上业务非常了解,从专业性的角度,需要对压测有很强的专业能力。如何快速识别异常指标, 

a. 指标,IOPS, 吞吐量,响应时间,延时,使用率,饱和度,瓶颈,工作负载,缓存。

b. 链路,链路诊断,瓶颈等;

c. Performance tuning, use(utlization、saturation、error)方法, 工作负载特征归纳、缓存,数据库等各种调优,等等;

d. 熔断,降级,限流,开关等策略

e. 报告


03

预见问题


不在同一个坑摔倒两次,如果预见未知的问题, 如果基于已有的问题预见未来可能的问题, 进而提升线上运维,能力。

a. 容量规划, 资源极限,因素分析,负载均衡,分片等;

b. 架构调优;

c. 故障演练。


04

其他 - 权衡三角


考虑当前团队所处的的状态,先僵化、后优化、再固化,还是那两个字“权衡”。


参考:

https://dzone.com/articles/capacity-planning-process-part-1

https://my.oschina.net/cctester/blog/994727

http://www.cnblogs.com/imyalost/p/8439910.html


THE END

- 晚安 -

图片长按2秒,关注订阅号

以上是关于聊聊性能 - 全链路压测overview的主要内容,如果未能解决你的问题,请参考以下文章

性能测试如何做全链路压测?

性能测试如何做全链路压测?

全链路压测(13):高可用和性能优化

聊聊全链路压测

换个角度,聊聊全链路压测

测试经验丨聊聊全链路压测