商业转载请联系腾讯 WeTest 获得授权,非商业转载请注明出处。
原文链接:http://wetest.qq.com/lab/view/336.html
北京时间 9 月 13 日凌晨 1 点,iPhone 10 周年,在 Apple Park 乔布斯剧院,苹果发布了三款新 iPhone。全面屏 iPhone X 来袭,这款被定义为未来的智能手机黑科技满满:全面屏,无线充电、面部识别 “Face ID” 以及跟踪你脸部动作的 Animoji。和往年的苹果秋季发布会一样,发布会在开始之前就获得了极高的关注,苹果官网也会承受极大的并发压力,看看往年的情况:
2014 年的 iPhone 6 预购的情况:
2014年9月12日下午三点,香港各个公司的办公平台都在不断的刷新苹果官网,当天苹果官网无法承载用户压力导致无法访问,网页通过多国文字显示 “我们将很快恢复服务”。
时隔一年,iPhone6s 的预约情况:
9 月 12 日,距离 iPhone 6s 开始预约不到两小时,尝试打开苹果官网浏览,结果显示无法访问。不光是苹果中国官网,美国以及中国香港、中国台湾等地均出现了类似故障。
今年,苹果官网早早的在发布会前 5 小时就开始维护,而今年,苹果官网没有再出现官网崩溃的情况。
网站的访问速度是企业必须要做好的事情。谷歌和一些网站的研究表明,用户们只愿意访问那些打开速度最快、性能最好的网站。一个网站每慢一秒钟,就会丢失许多访客,甚至其中很多访客永远不会再次光顾这个网站,对于 APP 来说,也是同理。
众多电商公司开始磨拳擦掌开始做 iPhone8 和 iPhoneX 的活动了,不过这里必须要问自己一句,你的活动页面准备好了吗?
活动前的压力测试,是做预约抢购活动必须经历的一个测试环节。
对活动页面进行压力测试的根本目的,是要实现活动页面上线时能够正常运行。不过在压力测试前,需要对 “用户访问页面” 的逻辑有清晰的认识。
这里举个例子:
中午去 “海底捞” 吃饭。 “海底捞” 就是你的活动页面。客人去吃饭,就是用户对这个活动页面发起请求,对这个页面造成了一定的负载。客人越多,这个页面负载就越大。几个桌子的客人一起开始点菜,就是对你的活动页面产生了并发。同时,其他桌有的在吃菜,有的在等菜,这些都是并发进行的事务。所以,一个请求会有多个事务产生,比如:点菜,下单,上菜,买单等步骤。
那么如何衡量这个饭店的承载能力好坏呢?
1、先看客人能不能一起进来,饭店能同时容纳多少人进来,就是并发量
2、客人进入饭店,发起下单的请求后,饭店要花多长时间上菜,我们称之为响应时间
3、饭店每秒可以给多少客人上菜,我们称之为 TPS(每秒处理事务数)
了解了这些指标之后,就基本可以很清晰的制定压测的目标了。
用户可以根据自己活动页面的实际需求,给这些指标设置具体的数值。例如,这边以某个压测大师的合作产品为例,指标要求设置如下:
● TPS:>1500 次/s
● 响应时间:<200ms
● 并发量:400
在制定完压测的目标之后,需要选择一个合适的压测工具,这边以 WeTest 压测大师为例:
1、进入腾讯 WeTest 官网,http://wetest.qq.com/
2、选择 “性能测试” 下的 “服务器性能”
3、进入项目(如果没有创建过项目,点击 “创建新项目”)
4、进入项目后,点击压测产品首页中的创建测试按钮,选择 URL 测试。
5、填写名称和用例备注,确定压测的机器人配置。
根据活动页面的承载要求,并发人数为 400,因此测试的起始人数就可以设置为 400,每隔 30 秒增加 0 人,最大人数为 400,代表页面上线后便产生了 400 的并发人数,并持续了 30 秒。(30 秒可增加,代表 400 并发的持续时间)
6、新建客户端请求,确认要压测的地址和客户端请求方式。
客户端请求包括 Web,H5 和 APP 接口等多种形式,方法选择可选 GET 和 POST(在客户机和服务器之间进行请求 - 响应时,两种最常被用到的方法是:GET 和 POST。GET - 从指定的资源请求数据;POST - 向指定的资源提交要被处理的数据),协议可以选择 “HTTP” 和 “HTTPS”。
客户端请求截图,图中填写了 WeTest 的测试地址
7、确认压力源,外部服务器选择 “腾讯云” 即可。
8、编辑测试模型,根据实际要求,如果只有一个压测场景,把 100% 的压力都放在该场景上。
9、开始测试。点击 “立即执行”,开始测试。
点击 “立即执行” 之后,测试会马上进入排队系统,如果压力源系统内有空闲资源将马上执行测试。
在测试过程中,测试报告页面会实时显示 “人数趋势” 和 “收发包率”,用户可以实时查看接口的压测情况。
压测结果可以首先查看总体的情况,了解本次压测的结果。
再来回顾一下活动页面主要关注的三个指标:
● TPS:>1500 次/s
● 响应时间:<200ms
● 并发量:400
压测大师测试报告页面会显示总体的数据概况,用户可以通过这些数据了解压测的基本结果。在服务器优化前后我们分别选取了两份不同的测试报告,内容如下:
测试报告一:
响应时间 2259.03ms 超出 200ms, TPS 82.44 次/s 低于 1500 次/s 的要求,这次测试结果不符合活动要求。
测试报告二:
经过优化后,活动页面的响应时间和 TPS 均满足要求,服务器优化很成功
在测试过程中,可以通过 “事务数据 “查看测试过程中的问题详情。
观察下图右侧 “请求统计” 中成功、失败、错误和超时的比例情况,了解此次压测收发包的精确结果。
下图右侧的 “耗时统计” 获取各类具体的耗时情况。
测试报告一:
此份报告可以看出 TPS 最高才达到了 100 左右,不满足测试需求
而看” 响应时间 “的统计图,可以发现从刚开始 400 的并发,服务器的响应时间就到了 1000ms。
测试报告二:
此份报告可以看出最低的 TPS 便达到了 1600 次/s,满足测试需求;
通过对活动页面反复的调试和压力测试,开发者可以迅速的发现服务器性能的瓶颈,并加以修复,保证页面在活动当天可以承载足够的压力,完成一个成功的活动。
WeTest 压测大师旨在降低开发者在服务器性能测试方面的门槛,迅速发现服务器端的性能瓶颈,进行针对性的性能调优,降低服务器采购和维护成本,提高用户留存和转化率。目前主要优势如下:
● 一分钟发起测试,无需编写脚本
● 无需配置压力机,随开随用,轻松发起十万压力
● 支持 HTTP、HTTPS 等协议,覆盖 Web,H5,APP,游戏等主流场景
● 实时查看测试报告,多维度报告对比,迅速定位性能瓶
目前 WeTest 压测大师已经正式对外开放:体验地址:http://wetest.qq.com/gaps/