聊聊性能 - 全链路压测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的主要内容,如果未能解决你的问题,请参考以下文章