高德每年会进行两次大型的压测(春节和十一),其他时间如:清明,五一,端午视各业务线的情况而定。在大型压测时,需要大量的压测资源(几百台,4C16G),而平时少量的压测资源(几十台)就足以满足日常的压测需求,因此在压测资源的管理上要保证灵活,需要时快速满足,不需要时释放,避免资源浪费。
目前TesgPG提供两种施压集群扩容的方式:一是使用Aone部署,通过Normandy平台进行快速扩容(pouch);二是支持用户自主提供压测机,技术方案是使用Docker + StarAgent 方式来实现施压机的自动部署。
压测资源调度:除了支持全链路压测外,还需要支持日常的压测。对于不同的压测,系统在设计上要满足多租户,多任务的需求,在压测资源的管理方面做到按需分配(目前是人工评估)。
高德压测平台的自建目标短期目标:
支撑高德全链路压测。
为高德所有服务提供线下压测的能力。
中期目标:
成为高德线上系统稳定性的试金石。
长期目标:
产品化,服务于集团的更多业务。
高德压测平台架构
高德压测平台业务架构
高德压测平台技术架构
高德压测平台特点
极速压测:
对于大部分简单压测需求,TestPG提供极速压测的能力,只需要填写被测服务地址,设定压测必须的url,请求类型,请求字段,QPS,压测时长等信息,就可以开始压测。对于初次使用平台的用户,平均15分钟即能上手压测。
调试能力:
TestPG平台提供两种调试手段:挡板调试和服务调试。
挡板调试:请求不会发往真实的服务,施压机作为调试挡板,对语料格式,url格式,请求参数进行校验。
服务调试:平台将压测请求(默认20条请求)发往真实的被测服务,并详细记录请求的上行数据和下行数据,格式化后,通过平台展示给用户。
调试的目的式帮助用户调整压测的参数,为正式的压测做好准备。
错误定位辅助:
TestPG平台会详细记录压测过程中出现异常的请求,对请求的上行数据和下行数据进行格式化保存,用户可以在压测过程中通过平台查看异常日志,定位错误原因。
详细的压测报告&基线对比:
TestPG平台在压测完成后自动产出压测报告,压测报告详细包括本次压测的整体、各场景、所有接口的QPS,RT,最大、最小RT,百分统计RT,错误请求数量,错误请求率。并且还包含压测时的实时QPS ,RT图表,以及被测服务的基础监控数据。
此外,压测报告还支持基线对别,若设定了基线报告,后续产出的压测报告都会和基线进行对比,在报告中就会体现出服务性能的变化。压测报告的详细信息可以查看下文平台展示中压测报告部分。
高德压测平台展示压测看板
调试
错误排查
压测报告
高德全链路压测的实践
2018年十一是我参加了高德全链路压测,当时团队的同学一起聚在稳定性保障会议室里,对高德的核心链路进行了为期两周的全链路压测。
高德的全链路压测流程是比较传统的方式,下图是历年全链路压测的大致流程: