日活上百万时,腾讯产品如何提前规避服务器宕机风险?

标签: geek | 发表时间:2017-05-15 00:00 | 作者:
出处:http://itindex.net/admin/pagedetail

原文链接: http://wetest.qq.com/lab/view/310.html
商业转载请联系腾讯WeTest获得授权,非商业转载请注明出处。


众所周知,优异的应用性能是良好用户体验的坚实基础,而服务器响应缓慢、卡顿、崩溃的产品,即便设计再精美也无法留住用户的心。

2017年2月28日,百度就和用户们开了一个不大不小的玩笑,从当天的20点54分到21点24分左右,百度搜索整整宕机了30分钟,众多网友戏言那30分钟成为了百度最有存在感的30分钟,但是从后来百度的公关文章中,可以看到其提到了“错过了大家上亿次的搜索请求”,从这个体量来看,这无论如何都是一次很大的影响了。
这里写图片描述

无独有偶,今日头条也在今年的1月出现了宕机现象,系统超过30分钟未响应,头条号的编辑后台也无法进入,这些现象,均给用户带来了很大的困扰,而且用户体量越大,影响的波及面就越广,不仅影响用户口碑,也影响产品收入。

这里写图片描述

如果把产品的月收入平摊到每一分钟的话,大家可以通过30分钟,60分钟,乃至12小时,24小时的停服时间计算具体的损失金额,还要加上因此产生的用户流失以及品牌口碑影响。

某国外知名游戏在上线之初冲击到iOS免费榜第二名的时候,因为没有做好应对大量玩家涌入的准备,服务器卡死、宕机,闪退让玩家失望选择离开,下载排名一度下降到475,通过两个月的服务器优化才挽回局面。

这样的例子有很多,随着重度游戏,重度产品越来越多,产品越来越重视服务器性能的优化。本文将结合腾讯WeTest团队为腾讯游戏及产品进行服务器压测的经验,分享一些方法和思路。


一、服务器性能核心指标有哪些

关于服务器压测,有很多指标。为了让大家更容易理解,举个生活中的例子:

你中午去“海底捞”吃饭。

我们可以把“海底捞”这个饭店看成一个 被测系统

你去吃饭,就是对这个被测系统发起 请求,对这个系统造成了一定的 负载。你带去的人越多,那么这个餐馆就越繁忙,可以说餐馆承受的负载就越大。

你开始点菜。这个时候你隔壁桌的人也开始点菜。那么你们两个对这个系统产生了 并发的请求。同时,其他桌有的在吃菜,有的在等菜,这些都是并发进行的 事务。一个完整的吃饭事务可以定义成包括:点菜,下单,上菜,买单四个步骤。对于一个C/S的系统来说,可以对应于:建立连接,发送请求,接受应答,断开连接。

影响一个餐馆生意好坏的一个重要原因是上菜速度。上菜速度体现在两个方面:

1.一个顾客请求的处理耗时,从下单到上菜中间等待的时间,我们称之为 响应时间

2.这个餐馆同时为多名顾客上菜的频率,我们称之为 吞吐量

来多少顾客,这是饭店自己无法控制的,但是饭店的上菜速度、餐位多少都会制约客流量。一定有一个峰值客流量,当来的客人超过了这个峰值,那么这些客人就会等位,或者是上菜速度超慢让客人无法容忍。容量测试就是通过工具模拟足够多的顾客来吃饭的事务,希望找到这样一个客流量对饭店产生一定的负载,这个时候饭店既能接待最多的客户同时也能保证最短的等待时间。更多的,还可以对这个酒楼人员配置和餐位设置等进行调优,以期达到一个最理想的资源利用率和效率。

客流量跟进来的客人多少有关,也跟餐馆的接待能力有关。单方面增加来就餐的顾客,遭到投诉的可能性就越大,上错菜的可能性也越大。

性能指标有很多,不可能全都看,那么有哪些核心的指标呢?

1、90%响应时间

是指所有用户的响应时间由小到大进行排序,第90%的响应时间,是用来评估系统容量的重要指标之一。

2、TPS性能,关注服务器的服务能力。

每秒系统处理事务(通过、失败以及停止)的数量。通过它可以确定系统在任何给定时刻的时间事务负载。

3、支持的最大在线人数。

指同时登录站点的最大人数或者服务器同时接收下载的最大数量。

4、服务器自身压测过程总CPU、内存等的变化情况。

CPU利用率是指:CPU执行非系统空闲进程的时间/CPU总的执行时间;内存占用率指的是此进程所开销的内存。

5、事务成功率

事务成功率=成功处理的事务/所有事务*100%,是检测服务器处理事务成功几率的重要指标。

二、市面上有哪些服务器压测方法

为了能够帮助用户更快捷的获得服务器的核心数据,市场产生了诸多各式各样的压测方法,但也存在各式各样的问题:

1、现网数据预估

根据压力测试过程中的部分数据,对未来大量用户访问的情况机型预估。

存在问题:只适合简单的服务器拟合,复杂服务器数据就不太准确。

2、真人压测

通过邀请一定数量的真实用户来玩游戏,从而对服务器达到一个测试效果。

存在问题:暴露出的性能问题有限,封测人数通常还是太少,虽然有几百或者几千用户在玩,但是并发并不够,不足以暴露服务端性能问题;另外不适合调优,真人无法完全重复相同行为,服务器就难以进行回归调优。

3、接口测试

选择一些具有代表性的功能,通过以小见大的方式,来评估整套服务器性能。

存在问题:无法遍历整个服务器的接口,难以避免一些微小的问题。

4、录制回放

通过抓取数据包的方式,来获取游戏时的协议,再把这些捕获的协议重新发送给服务端,通过工具放大协议量级达到性能测试的目的。

存在问题:面对复杂的协议交互,单纯的放大数据包,无法产生足够压力。

5、机器人模拟

通过高还原真实玩家的用户行为,模拟高并发场景,从而得到类似很多人同时游戏的测试效果。

这些方法各有优劣,腾讯内部普遍使用“机器人模拟”的方法进行压测,而“机器人模拟”的压测方法需要充足的测试时间和很大的人力投入,为此腾讯制定了一个较为通用的测试流程,用以提升压测效率。

三、腾讯内部服务器性能的测试流程介绍

根据腾讯内部游戏和产品的使用需求,腾讯WeTest团队首先针对http与https协议的页面,梳理了一个通用的压测流程。

1、 确定压测场景,比如登录,获取信息列表等

测试人员第一步要做的就是测试方案的确认,主要就是提前模拟实际业务中涉及的场景以及场景中用户的使用行为,通常需要确认这样几点:

1) 确认用户的登录状态,用户的登录态是否会不断变化

2) 用户登录后的访问路径之间的上下文关系

3) 访问路径之间的参数传递关系

2、 测试人员编写测试用例

编写测试用例就是将上述模拟场景具体化的过程,包括确认压测的人数,人数递增逻辑,具体需要压的接口,接口之间的参数传递等。

3、 启动机器人进行测试,渐进增加机器人数量

在确认了测试方案后,这一步就是执行的过程,根据测试方案中预估的压力人数,渐进的增加压力的人数。

4、 记录分析数据及事务处理情况,查看服务器负载的变化以及服务器的当前承载能力。

上一步提到了要渐进增加机器人,那么为什么要渐进增加机器人?因为在服务器并发增加的过程中需要不断监控上文服务器的核心数据,不断挑战服务器处理能力的极限,避免上来就使用一个过高的并发数直接超过了服务器处理能力的极限,从而无法起到性能优化的目的。一般来说,在机器人增加的过程中,CPU的突然跑满以及响应时间瞬间变长,都可能是服务器产生了瓶颈。因此压测人员需要实时监控压测上升过程中的服务器情况变化,从而定位问题所在。

5、 调整配置,迭代测试,预估服务器的承载能力以及可能存在的性能瓶颈

在发现基本的测试问题后,测试人员需要通过不断的调试来定位问题,然后重新发起压测,知道实现最终的测试目的。

根据这个测试流程,腾讯内部也总结了一些压测产品所需要具备的特点。

1) 简单易上手

产品的业务场景是多变的,但是好的压测产品应该让这个场景配置过程变得简单易用,用户在简单输入需要压测的URL即可进行各个接口的测试,大部分测试配置建议提供一个默认值,用户对功能更加了解之后可以自由配置这些参数。

2) 进阶功能完善

除了简单易用之外,也要给用户提供一些进阶的功能,在简单输入URL的基础上,可以支持用户自定义变量,从文件读取变量,甚至从其他URL的返回值获取变量的值,可以比较真实模拟真实场景,避免请求变量单一。

3) 提供分布式压力机进行压测

由于单机的局限性,压测产品可以使用分布式压测的框架,根据用户配置的机器人数量动态分配多个压测机,极大提升压力上限。

4) 详细的测试数据统计

压测大师会记录测试过程中的多项数据,包括在线人数变化、TPS变化、响应时间、收发包流量、服务器CPU内存状态、压力机硬件负载、测试结果统计等,可以快速定位服务器的容量以及瓶颈。

基于这些需求,腾讯WeTest团队开发了专注服务器压测的产品“压测大师”,简化了压测配置过程,用户可以在线上部署,线上调试,线上查看报告,帮助用户成为最高效的“压测大师”。

四、测试案例:真实模拟《NOW直播》活动场景

腾讯NOW直播是腾讯目前发展非常迅速的直播应用,在其一场线上活动中,需要对活动的所有接口进行压力测试,提前暴露问题并解决,确保活动的顺利实施。为此,NOW直播团队选择使用“压测大师”,对活动进行了一整套场景测试。

“压测大师”包含“页面测试”,“URL测试”和“高级模式”三块功能。

“页面测试”适用于HTTP、HTTPS协议,可对Web,H5等页面进行压力测试,主要测试页面静态资源的压力数据,帮助提升官网推广大型运营活动时网站的稳定性;

在“URL测试”中,用户可以设置用户并发增长形式,不同URL的上下文参数配置以及服务器监控,实现最多同时16个用户场景,实现更多的场景配置;

而“高级模式”适用于HTTPS及其他协议,包括自定义协议等。支持对游戏,产品协议进行压力测试,用户通过代码配置,可以根据自身需求开启协议压测。

在测试过程中,NOW直播团队首先梳理了测试思路,一方面通过单接口压测,提前暴露核心模块的问题;另一方面通过多接口的场景设置,尽量模拟真实用户行为,使得压测结果更有说服力。

在测试过程中,《NOW直播》利用”压测大师“的URL测试功能,针对“发消息”“点赞”“拉取公告”“注册”“读取房间信息”“进入房间”等各个独立行为进行单接口压测,通过设置压测起始人数,每阶段增长人数以及最大人数(见下图),设计接口的压力情况。
这里写图片描述

“压测大师”URL测试中的“人数设置”

另外对于用户不同的访问行为,《NOW直播》对“注册-房间信息-进房”进行了多场景的压测(见下图),通过GET请求,读取一个用户的“登录态”,通过功能接口随机产生不同行为逻辑的机器人,模拟真实的QQ用户;然后通过POST请求依次执行具体的业务行为,最后通过URL测试中的“上下文配置”,选择调用不同的功能接口,从而发现功能之间产生的逻辑问题。

这里写图片描述

“压测大师”URL测试中的“上下文设置”

经过几天紧张的测试,NOW直播活动的各个场景数据都得到了大大的提升,其中“用户进入房间”场景的响应时间减少了近一半;“用户发送消息”与“点赞”场景的TPS提升四倍,为活动的稳定开展提供了坚实的保障。


无论是游戏还是产品,腾讯经历过无数次服务器的考验,面对这些考验,腾讯也渐渐总结出了一套通用的应用性能管理解决方案,让用户能够在游戏上线之前基于真实业务场景和用户行为进行压力测试,发现服务器端的性能瓶颈,并进行针对性的性能调优。以上内容也是根据腾讯产品无数次的压测总结下来的一些经验,腾讯WeTest团队也希望通过“压测大师“这类产品,不断简化服务器压测的过程,提升压测人员的工作效率。

功能目前免费对外开放中,欢迎大家的体验!
体验地址: http://wetest.qq.com/gaps/

如果对使用当中有任何疑问,欢迎联系腾讯WeTest企业qq:800024531

相关 [日活 百万 腾讯] 推荐:

日活上百万时,腾讯产品如何提前规避服务器宕机风险?

- - IT瘾-geek
原文链接: http://wetest.qq.com/lab/view/310.html. 商业转载请联系腾讯WeTest获得授权,非商业转载请注明出处. 众所周知,优异的应用性能是良好用户体验的坚实基础,而服务器响应缓慢、卡顿、崩溃的产品,即便设计再精美也无法留住用户的心. 2017年2月28日,百度就和用户们开了一个不大不小的玩笑,从当天的20点54分到21点24分左右,百度搜索整整宕机了30分钟,众多网友戏言那30分钟成为了百度最有存在感的30分钟,但是从后来百度的公关文章中,可以看到其提到了“错过了大家上亿次的搜索请求”,从这个体量来看,这无论如何都是一次很大的影响了.

日活 8000 万的王者荣耀,腾讯是如何打造这款产品?

- - IT瘾-dev
在公车上,在地铁上,在公司饭后,在春节回家同学聚会的这些生活场景,随处可见有人在玩王者荣耀. 王者荣耀作为一款优质的产品,你有没有想过,腾讯是如何打造这款产品. 你有没有想过王者荣耀是如何流行起来的. 王者荣耀很火,日活超5000万. 记得在春节回家的大巴上,我掏起手机打开了王者荣耀,正准备找些乐子.

腾讯的内涵图

- keeno - 阿禅日记
2011年5月31日10:33,腾讯QQ 浏览器首页的截图如下:. 内涵关键词:释放、aiww、64. 1小时后,腾讯将图片替换掉了. 对这位如此有内涵的经理或编辑或设计师致敬. © Jason Ng for 阿禅日记, |. 不要用中国手机号来找回Gmail密码.

腾讯电商帝国

- 以外 - 互联网的那点事...
腾讯宏伟的电子商务战略开始逐渐浮出水面. 5月30日,腾讯正式对电子商务业务的内部组织架构进行重组,机构更加复杂全面的电子商务业务线取代了原来的电子商务部,同时进行近十位中、高层管理人员的职位变动及内部人员的调整. 同时,腾讯一直在电商领域全面出击,通过投资进行战略布局. 从今年年初至今,腾讯以超乎想象的速度战略入股了数家电子商务企业,包括已经对外公 布的好乐买、易讯、F团以及数宗尚未对外公布的收购案.

腾讯CMEM的PHP扩展

- duyue - 平凡的世界
最近公司在做相关的业务,由于Memcached协议缺少返回码,为了保证业务数据的安全性,不得已只好自己写个扩展来实现需求. 基于memcache扩展的2.2.6的稳定版开发而来. 代码已经开源,有需要的朋友请拿走,License是PHP License,请自觉遵守. 项目主页:http://code.google.com/p/cmem/.

腾讯:变局前夜

- - 互联网的那点事
8条业务线,20座城市,20000名员工. 做为中国最大的互联网公司之一,腾讯正面临着前所未有的管理挑战. 2012年4月12日,网易发布的一则公告引起了业界的强烈反响. 网易称,旗下重要产品——新闻客户端遭到腾讯抄袭. 腾讯当天上架地新闻iPhone客户端2.0版本在产品整体布局、跟帖页面、图片浏览页面的设计几乎与网易新闻客户端的相关功能和设计完全一致.

抄袭,腾讯 和 产品

- - 黄小肆依旧在理性与感性里挣扎
作者:陈皓 很早就想写这篇文章了,只是想法比较零碎,所以一直没有成文,这两天觉得思考得比较成熟了一些,所以把我的这些想法整理下来,欢迎大家一起和我讨论. 首先,先表达我的立场,我对抄袭的立场持BS和痛恨的态度,尤其是 那些C2C的网站,痛恨这些国外有什么就山寨什么的做法,尤其是那些连界面都不改,像素级的抄袭,连CSS和img都是一样的,更甚者,连图片都链接到抄袭源的网站去了,连源代码都抄的行为,比如: 腾讯抄新浪的代码, 新浪抄twitter的源码.

温州动车劫——媒体封面_腾讯新闻_腾讯网

- Robert Mao - 牛博山寨 编辑推荐

腾讯陈军:腾讯云平台与技术实践分享

- Sepher - 服务器运维与网站架构|Linux运维|互联网研究
[第三届中国云计算大会]2011年最受瞩目的IT业界盛会——第三届中国云计算大会于2011年5月18-20日在北京国家会议中心隆重举行. 本次大会由中国电子学会主办,中国电子学会云计算专家委员会、中国云计算技术与产业联盟承办,CSDN网站、《程序员》杂志和电子工业出版社协办. 5月20日,在第三节云计算大会分论坛二“云计算平台与应用实践”中,腾讯网络平台部技术总监陈军带来了主题为《腾讯云平台与技术实践》精彩演讲.