美团点评技术沙龙011 - 团购系统流量和容量评估实践

69
大促活动前团购系统 流量预算和容量评估实践 丁媛 2016-09-10

Post on 16-Apr-2017

493 views

Category:

Engineering


3 download

TRANSCRIPT

Page 1: 美团点评技术沙龙011 - 团购系统流量和容量评估实践

大促活动前团购系统 � 流量预算和容量评估实践 � 丁媛 �  � 2016-09-10 � 

Page 2: 美团点评技术沙龙011 - 团购系统流量和容量评估实践

目录 � 大促活动前团购系统 � 

流量预算和容量评估实践 � 

01

02

03

04

05

背景介绍 � 

流量预算 � 

容量评估——压力测试策略 � 

容量评估——压力测试方法 � 

总结展望 � 

Page 3: 美团点评技术沙龙011 - 团购系统流量和容量评估实践

团购移动 � 

到店综合平台 � 

团购主频道 � 

2013

2014

2015

2016

会员卡 � 

个人介绍 � 

丁媛 � 

到店综合用户端测试组 �  � 

综合平台 � 

Page 4: 美团点评技术沙龙011 - 团购系统流量和容量评估实践

单日交易额 � 

1亿 � 

日均订单量 � 

百万 �  流量最高峰 � 移动交易额 � 

占比超过90% � 

引言 � 

Page 5: 美团点评技术沙龙011 - 团购系统流量和容量评估实践

瞬时流量 � 

吃货节 � 免费玩 � 

免费吃 � 

立减 � 

秒杀 � 

红包 � 

抢购 �  热点团单 � 

核心路径 � 

大促活动的特点 � 

Page 6: 美团点评技术沙龙011 - 团购系统流量和容量评估实践

团购WEB � 

IOS/Android

团单服务 � 

团单库 � 

缓存集群

团购系统架构演进 �  � 早期的团购系统 � 

API层 � 

Service层 � 

数据持久层 � 

数据缓存层 � 

200+ � API接口 � 

Page 7: 美团点评技术沙龙011 - 团购系统流量和容量评估实践

5月17号是个好日子, � 

我们策划了一场超级大促~ � 

预计流量要翻20倍~ � 好赞 � 

但是。。系统扛不住啊 � 

开 � 发 � 

运 � 营 � 

Page 8: 美团点评技术沙龙011 - 团购系统流量和容量评估实践

好啊 � 加几台? � 

大促活动来啦, � 

运维哥哥给扩容加机器啊 � 

开 � 发 � 

运 � 维 � 

Page 9: 美团点评技术沙龙011 - 团购系统流量和容量评估实践

要制定扩容计划, � 

我们集群容量多少啊 � 压力测试?? � 线上?线下?都很难 � 

开 � 发 � 

测 � 试 � 

Page 10: 美团点评技术沙龙011 - 团购系统流量和容量评估实践

。。。 � 

算了 � 拍个脑袋, � 

两个应用各扩300台吧 � 

开 � 发 � 

运 � 维 � 

Page 11: 美团点评技术沙龙011 - 团购系统流量和容量评估实践

团购WEB应用 � 

IOS/Android

团单库 � 

团单服务 � 

缓存集群B

团购系统架构的演进 � 现在的团购系统 � 

价格服务 �  属性导航服务 � 

团购商户服务 � 

团单库存服务 � 

缓存集群A 缓存集群C

团单基础库 �  团单属性库 � 

MAPI/WEB

Service层 � 

数据持久层 � 

数据缓存层 � 

基础服务 �  团购详情服务 � 

团单库存库 � 

Page 12: 美团点评技术沙龙011 - 团购系统流量和容量评估实践

团单详情应用 � 

IOS/Android

MAPI/WEB

Service层 � 

数据持久层 � 

基础/价格服务包 �  团单属性导航包 � 

数据缓存层 �  缓存集群A

团单基础库 �  团单库存库 �  团单属性库 � 

缓存集群C

团单交易应用 �  个人中心应用 � 

团单聚合服务包 � 

团单库存服务包 � 

缓存集群B

团购系统架构的演进 � 现在的团购系统 � 

团购WEB应用 � 

Page 13: 美团点评技术沙龙011 - 团购系统流量和容量评估实践

团购系统架构的演进 � 

Page 14: 美团点评技术沙龙011 - 团购系统流量和容量评估实践

9月17号是个好日子, � 

我们策划了一场超级大促~ � 

预计流量要翻20倍~ � 

运 � 营 � 

好赞! � 

但是。。估计系统扛不住啊 � 

开 � 发 � 

Page 15: 美团点评技术沙龙011 - 团购系统流量和容量评估实践

好啊 � 加几台? � 

大促活动又来啦, � 

运维哥哥给扩容加机器啊 � 

开 � 发 � 

运 � 维 � 

Page 16: 美团点评技术沙龙011 - 团购系统流量和容量评估实践

还可以通过分层压测评估系统容量 � 

我们要有一份 � 

详细的流量预算数据 � 

开 � 发 � 

测 � 试 � 

Page 17: 美团点评技术沙龙011 - 团购系统流量和容量评估实践

好的,没问题! � 

请根据我们提供的扩容计划表,

给核心路径应用加机器 � 

开 � 发 � 

运 � 维 � 

Page 18: 美团点评技术沙龙011 - 团购系统流量和容量评估实践

�  � — � 

� 

集群现有机器数 �  �  � = � 扩容机器数 � X �  � 余量系数 � 

单机容量 � 

大促活动前的准备 � 

活动峰值流量 � 

Page 19: 美团点评技术沙龙011 - 团购系统流量和容量评估实践

目录 � 大促活动前团购系统 � 

流量预算和容量评估实践 � 

01

02

03

04

05

背景介绍 � 

流量预算 � 

容量评估——压力测试策略 � 

容量评估——压力测试方法 � 

总结展望 � 

Page 20: 美团点评技术沙龙011 - 团购系统流量和容量评估实践

平时的流量 �  大促时的流量 � vs

Page 21: 美团点评技术沙龙011 - 团购系统流量和容量评估实践

大促活动的核心路径 � 

h5活动页 �  团购详情页 �  提交订单页 � 

Page 22: 美团点评技术沙龙011 - 团购系统流量和容量评估实践

大促活动的核心路径 � 

h5活动页 �  团购详情页 �  提交订单页 � 

Page 23: 美团点评技术沙龙011 - 团购系统流量和容量评估实践

团购WEB � 

�  �  �  �  �  �  �  �  � IOS/Android � 

MAPI/WEB � 

Service层 � 

数据持久层 � 

基础/价格服务包 �  团单属性导航包 � 

数据缓存层 � 

团单聚合服务包 � 

缓存集群TG � 

团单基础库 �  团单库存库 �  团单属性库 � 

缓存集群TGD � 

团单库存服务包 � 

缓存集群DealBase � 

大促时核心路径架构图 � 

Page 24: 美团点评技术沙龙011 - 团购系统流量和容量评估实践

团购详情应用有6个基础模块,占应用访问量的97% �  �  �  �  �  �  �  �  � 核心路径 � 

•  团购基本信息接口 � •  团购详情须知接口 � •  团购适用商户接口 � 

非核心路径 � •  本店其他团购推荐接口 � •  看了又看接口 � •  网友点评接口 � 

第一步:根据活动页每个按钮的位置 �  � → �  � 梳理APP � Native页面每个接口的调用 � 

活动流量预算 � 

Page 25: 美团点评技术沙龙011 - 团购系统流量和容量评估实践

活动流量预算 � 

团购详情接口 � 

IOS/Android

本店其他团购推荐 � 团购适用商户接口 �  看了又看接口 �  网友点评接口 � 

团购基本信息接口 � 

团购详情页6个基础模块的接口之间调用顺序 � 

第二步:梳理接口之间的调用顺序以及接口内部的调用链 � 

Page 26: 美团点评技术沙龙011 - 团购系统流量和容量评估实践

活动流量预算 � 

第三步:通过代码分析和CAT堆栈,梳理接口依赖的服务及服务调用次数 � 

Page 27: 美团点评技术沙龙011 - 团购系统流量和容量评估实践

团购基础信息API 团购商户API

团单基础服务 �  团单详情服务 �  团单收藏服务 �  团单商户服务 � 

团单价格历史服务 �  团单价格服务 �  团单库存服务 � 

缓存集群TG 缓存集群DealBase 缓存集群TGD

团单基础库 �  团单属性库 �  团单库存库 � 

团单后台服务 � 

团购详情API

团单属性服务 � 

1 5

1

7

28

97%

1

7 7 7

创建订单、⽀支付等其他场景

Page 28: 美团点评技术沙龙011 - 团购系统流量和容量评估实践

团购基础信息API 团购商户API

团单基础服务 �  团单详情服务 �  团单收藏服务 �  团单商户服务 � 

团单价格历史服务 �  团单价格服务 �  团单库存服务 � 

缓存集群TG 缓存集群DealBase 缓存集群TGD

团单基础库 �  团单属性库 �  团单库存库 � 

团单后台服务 � 

团购详情API

团单属性服务 � 

1 1

7 2 1 1 1

2 7 7 7

7 711

74 7114 2428

97% 99%

99.9% 85% 5% 98%

创建订单、⽀支付等其他场景

1 5

Page 29: 美团点评技术沙龙011 - 团购系统流量和容量评估实践

大促活动核心路径流量模型下,设详情页的流量为单位1,此时流量构成如下: �  � 

•  访问服务次数: � 

活动流量预算 � 

服务 �  访问次数 � 

团购基础服务 �  7 � 

团购详情服务 �  1 � 

团购价格服务 �  7 � 

团购属性读服务 �  2 � 

团购库存读服务 �  7 � 

团购商户服务 �  1 � 

团购后台服务 �  2 � 

团购历史服务 �  7 � 

团购收藏服务 �  1 � 

Page 30: 美团点评技术沙龙011 - 团购系统流量和容量评估实践

在大促活动流量模型下,设详情页的流量为单位1,此时流量构成如下: �  � 

•  访问cache次数: � 

•  访问DB次数: � 

活动流量预算 � 

缓存系统 �  访问次数 � 

memcached-A �  7 � 

memcached-B �  11 � 

memcached-C �  7 � 

数据库 �  访问次数(不考虑缓存) � 

团购基础库 �  49 � 

团购属性库 �  11 � 

团购库存库 �  7 � 

Page 31: 美团点评技术沙龙011 - 团购系统流量和容量评估实践

活动流量预算——扩容计划表 � 

done

Page 32: 美团点评技术沙龙011 - 团购系统流量和容量评估实践

�  � — � 

� 

集群现有机器数 �  �  � = � 扩容机器数 � X �  � 余量系数 � 

单机容量 � 

大促活动前的准备 � 

活动峰值流量 � 

Page 33: 美团点评技术沙龙011 - 团购系统流量和容量评估实践

目录 � 大促活动前团购系统 � 

流量预算和容量评估实践 � 

01

02

03

04

05

背景介绍 � 

流量预算 � 

容量评估——压力测试策略 � 

容量评估——压力测试方法 � 

总结 � 

Page 34: 美团点评技术沙龙011 - 团购系统流量和容量评估实践

34

系统容量评估——压力测试 � 

• 压测目的 � 

• 压测环境 � 

• 压测类型 � 

压测策略 � 

• 压测方法 � 

• 压测场景 � 

• 压测数据 � 

压测过程 �  压测结论 � 

• 数据采集 � 

• 监控告警 � 

Page 35: 美团点评技术沙龙011 - 团购系统流量和容量评估实践

是否可以通过水平扩容来提升集群容量,系统瓶颈在哪? � 

集群容量 � 

监控指标应该如何设置, � 若超过阈值告警机制是否生效? � 

监控告警 � 数据库能承担的压力是多少? � 

DB容量 � 

应用的单机容量是多少? � 单机容量 � 

系统容量评估——压测目的 � 

Page 36: 美团点评技术沙龙011 - 团购系统流量和容量评估实践

36

系统容量评估——压力测试 � 

理想 � 

• 线上压测 � 

• 系统全链路压测 � 

• 一次压测解决问题 � 

� 

现实 � 

•  线上压测有风险,成本高 � 

•  时间紧(活动测试、版本发布

和压力测试并行) � 

•  全链路压测依赖服务多,参与/

周知人员多 � 

•  全链路可以压出系统瓶颈,但

是不能提供单机容量 � 

保证压测数据有效性的基础上,做性价比最高的压力测试 � 

Page 37: 美团点评技术沙龙011 - 团购系统流量和容量评估实践

系统容量评估——压测环境 � 

BETA环境 �  PPE环境 �  线上环境 �  PTP环境 � 

硬件环境 � 

数据可靠 � 

稳定 � 

易用 � 

风险 � 

Page 38: 美团点评技术沙龙011 - 团购系统流量和容量评估实践

PTP性能测试环境 � 

Page 39: 美团点评技术沙龙011 - 团购系统流量和容量评估实践
Page 40: 美团点评技术沙龙011 - 团购系统流量和容量评估实践

•  机器数量有限 �  � à �  � 基于Docker的虚拟机器池 � 

•  维护成本很高 �  � à �  � 一键部署被测应用 � 

•  资源利用率低 �  � à �  � 定期环境清理 � 

PTP性能测试环境 � 

•  解决传统的性能测试环境存在的问题 � 

Page 41: 美团点评技术沙龙011 - 团购系统流量和容量评估实践

PTP性能测试环境——硬件环境 � 

•  与线上机器配置一致 � 

•  同步线上JVM配置 � 

Page 42: 美团点评技术沙龙011 - 团购系统流量和容量评估实践

PTP性能测试环境——数据可靠性 � 

•  同步线上数据库/表 � 

Page 43: 美团点评技术沙龙011 - 团购系统流量和容量评估实践
Page 44: 美团点评技术沙龙011 - 团购系统流量和容量评估实践

如何部署依赖的服务?

Page 45: 美团点评技术沙龙011 - 团购系统流量和容量评估实践

p  直接依赖服务 � 

p  间接依赖服务 � 

p  数据库依赖 � 

p  公共服务 � 

p  手动添加 � 

PTP性能测试环境——智能依赖 � 

•  智能依赖模块 � 

Page 46: 美团点评技术沙龙011 - 团购系统流量和容量评估实践

•  环境搭建流程 � 

新建测试 � 项目 � 

智能拉取 � 依赖 � 

配置项目 � 参数 � 

配置测试 � 环境 � 

初始化 � 测试环境 � 

p  Web页面入口 � 

p  查找被测服务 � 

p  获取直接依赖 � 

p  获取间接依赖 � 

p  手工添加依赖 � 

p  测试名称 � 

p  上传jmx测试脚本 � 

p  上传数据文件 � 

p  上传流量包等 � 

p  选择被测机器CPU � 

p  选择被测机器内存 � 

p  选择被测应用版本 � 

p  申请机器 � 

p  检查依赖DB � 

p  部署被测应用 � 

p  部署直接依赖服务 � 

p  部署间接依赖服务 � 

p  查看部署日志 � 监控系统CAT:Dependency实时报表 �  代码管理系统CODE � 

容量评估方法——PTP性能测试环境 � 

Page 47: 美团点评技术沙龙011 - 团购系统流量和容量评估实践

直接获取的依赖服务不全怎么办?

Page 48: 美团点评技术沙龙011 - 团购系统流量和容量评估实践

回流依赖模块 � 

预跑 �  回流 �  正式测试 � 

p  直接执行测试脚本 �  p  获取缺失的依赖 � 

p  循环调用部署模块 � 

p  继续回流分析 � 

p  直至无依赖缺失 � 

p  正式执行测试脚本 � 

p  展示实时性能数据 � 

监控系统CAT:Problem  

PTP性能测试环境——依赖回流 � 

Page 49: 美团点评技术沙龙011 - 团购系统流量和容量评估实践

•  数据可靠性 � 

p  硬件环境灵活配置 � ✓ � 

p  数据库可以随时同步线上数据 � ✓ � 

p  施压机和被测应用都可以是集群✓ � 

•  稳定性 � 

p  专职专用,不会影响正常的功能测试 � ✓ � 

p  自动部署依赖应用的稳定版本✓ � 

p  支持泳道配置,可以同时压测多个服务✓ � 

•  易用性 � 

p  支持Jmeter、Tcpcopy等压测方法✓ � 

� 

Page 50: 美团点评技术沙龙011 - 团购系统流量和容量评估实践

50

系统容量评估——压力测试 � 

• 压测目的 � 

• 压测环境 � 

• 风险成本 � 

压测策略 � 

• 压测方法 � 

• 压测场景 � 

• 压测数据 � 

压测过程 �  压测结论 � 

• 数据采集 � 

• 数据分析 � 

• 监控告警 � 

Page 51: 美团点评技术沙龙011 - 团购系统流量和容量评估实践

51

系统容量评估——压测方法 � 

p  线上压测方法——逐步减小集群规模 � 

-  通过逐台摘机器的方法,使得单台机器的访问量不断提升,来达到压力测试的目的。 � 

-  优点:应用无需读写接口分离 � 

-  缺点: � 

-  1.逐个摘机器有风险 �  �  �  � 

-  2.对流量规模有要求,不能太小,否则压不到瓶颈 �  � 

-  3.需要运维人员的密切配合。 � 

Page 52: 美团点评技术沙龙011 - 团购系统流量和容量评估实践

52

系统容量评估——压测方法 � 

p  线上压测方法——线上Tcpcopy � 

-  在集群中挑选A、B两台机器,A为被压机,B为施压机。 � 

-  将A配置一个泳道(机器不对外提供服务),通过Tcpcopy将B的流量逐渐放大至A。 � 

-  优点:流量比例、风险小,可以随时修改放大倍数 �  � 

-  缺点: � 

1、要求被压的服务只能是纯读服务,不能有写接口,否则会带来脏数据 �  � 

2、Tcpcopy工具限制,放大40倍会挂掉,若线上流量太小。 � 

则需要首先摘掉部分机器以提高单机的QPS � 

Page 53: 美团点评技术沙龙011 - 团购系统流量和容量评估实践

53

系统容量评估——压测方法 � 

p  线下压测方法——性能测试平台 � 

p  模拟线上机器配置、JVM配置 � 

p  模拟线上接口请求比例 � 

p  模拟线上接口请求参数分布 � 

p  模拟线上缓存命中率 � 

Page 54: 美团点评技术沙龙011 - 团购系统流量和容量评估实践

54

系统容量评估——压力测试 � 

• 压测目的 � 

• 压测环境 � 

• 风险成本 � 

压测策略 � 

• 压测方法 � 

• 压测场景 � 

• 压测数据 � 

压测过程 �  压测结论 � 

• 数据采集 � 

• 数据分析 � 

• 监控告警 � 

Page 55: 美团点评技术沙龙011 - 团购系统流量和容量评估实践

系统容量评估——压测场景 � 

实例一 � 

•  团购基础查询服务提供了两种查询方式:单个查询和批量查询 � 

•  设计测试场景时需要考虑两种接口的比例分布 � 

•  使用jmeter比例控制器做控制 � 

Page 56: 美团点评技术沙龙011 - 团购系统流量和容量评估实践

系统容量评估——压测场景 � 

实例二 � 

•  团购基础查询服务的批量接口参数个数 � 

•  需要设计调用批量查询接口时传入的团单id个数 � 

Page 57: 美团点评技术沙龙011 - 团购系统流量和容量评估实践

系统容量评估——压测场景 � 

实例三 � •  针对对应用性能有影响的参数类型、逻辑分支设计场景 � •  例如团购销量查询服务区分品类 � 

-  A品类团单要展示聚合销量、B品类团单要展示分城市销量 � 

-  不同的逻辑分支,查询不同的缓存和数据库 � 

Page 58: 美团点评技术沙龙011 - 团购系统流量和容量评估实践

p  压力测试数据的构造 � 

-  线上流量tcpdump,到性能测试环境做流量翻倍回放 � 

-  采取MAPI � Nginx � access � log回放机制,对用户真实访问行为进行回放 � 

-  人工构造数据 � 

� 

系统容量评估——压测数据 � 

Page 59: 美团点评技术沙龙011 - 团购系统流量和容量评估实践

系统容量评估——压测数据 � 

•  被测应用:团购详情WEB应用(纯读服务) � 

•  压测环境:性能测试环境 � 

•  压测数据:tcpdump复制线上流量在性能环境做回放 � 

•  压测方法: � 

实例一 � 

-  选择合适的时间段(流量不要太低) � 

-  dump流量时间足够长,流量翻倍时数据离散度需满足要求 � 

Page 60: 美团点评技术沙龙011 - 团购系统流量和容量评估实践

系统容量评估——压测数据 � 

•  被测应用:个人中心WEB应用(读+写) � 

•  压测环境:性能测试环境 � 

•  压测数据:nginx � access � log � 

•  压测方法: � 

实例二 � 

-  将最近通过app的访问nginx � access � log进行分类(读、写) � 

-  线上到线下token的解析问题 � 

Page 61: 美团点评技术沙龙011 - 团购系统流量和容量评估实践

系统容量评估——压测数据 � 

Nginx � access日志 � 

Page 62: 美团点评技术沙龙011 - 团购系统流量和容量评估实践

系统容量评估——压测数据 � 

•  被测应用:团购基础信息服务 � 

•  压测环境:性能测试环境 � 

•  压测数据:人工构造数据(csv文件) � 

•  压测方法: � 

实例三 � 

-  人工构造的数据应模拟线上的缓存命中率 � 

-  缓存命中率比线上环境偏低,需要进行缓存预热 �  � 

-  缓存命中率比线上环境偏高,需要尽量模拟线上团单的离散程度 � 

Page 63: 美团点评技术沙龙011 - 团购系统流量和容量评估实践

p  压力结果数据的采集 � 

-  CAT � Heartbeat � / � Transacation � 

-  PTP性能测试平台监控报告 � 

-  Jconsole/ � VisualVM � (推荐,集成多个JVM命令的可视化工具) � 

-  JVM命令:jstack/jstat/jmap � 

系统容量评估——压测结果采集 � 

Page 64: 美团点评技术沙龙011 - 团购系统流量和容量评估实践

64

系统容量评估——压测结果采集 � 

Page 65: 美团点评技术沙龙011 - 团购系统流量和容量评估实践

�  � — � 

� 

集群现有机器数 �  �  � = � 扩容机器数 � X �  � 余量系数 � 

单机容量 � 

大促活动前的准备 � 

活动峰值流量 � 

Page 66: 美团点评技术沙龙011 - 团购系统流量和容量评估实践

扩容计划表 � 

Page 67: 美团点评技术沙龙011 - 团购系统流量和容量评估实践

目录 � 大促活动前团购系统 � 

流量预算和容量评估实践 � 

01

02

03

04

05

背景介绍 � 

活动流量预算 � 

系统容量评估——压力测试策略 � 

系统容量评估——压力测试过程 � 

总结 � 

Page 68: 美团点评技术沙龙011 - 团购系统流量和容量评估实践

68

总结 � 

流量预算 � 

容量评估 � 从

上到

下评

估流

量 � 

从下

到上

提供

能力

� 

保证大促期间核心路径用户体验 � 

Page 69: 美团点评技术沙龙011 - 团购系统流量和容量评估实践

69

Thank � You �