电商网站全链路压测实战

news/2024/5/15 15:50:32/文章来源:https://blog.csdn.net/sanmi8276/article/details/107362853

1.背景

在电商及互联网应用时代,用户和流量已成为应用核心竞争力,而随着数字化营销逐渐走进各个领域,线上的秒杀抢购、热点营销等活动也成为企业的必备营销手段,营销带来的大规模流量浪涌对系统来说是个巨大的考验,如何应对用户和流量激增的同时又能保障应用的稳定运行已成为各厂家必须解决的问题。本文将分享如何测试和分析电商类网站的性能瓶颈

2.测试工具选型

本次选择测试工具是华为云的云性能测试服务
不采用开源和传统测试工具的原因是:

  • 测试周期:压测环境搭建维护复杂,耗费的时间长。
  • 使用门槛:Jmeter的学习成本还比较高,当企业出现人员交接的时候需要无法快速找到替代人员。
  • 经济成本:专业性能测试工具license采购成本在上百万人民币,而当前华为云性能测试服务还属于免费阶段。
  • 弹性按需:根据服务器吞吐量,资源按需扩容,提升资源利用率。

3.了解监控指标

  • 并发用户数:在性能测试工具中,并发用户数一般被称为虚拟用户数。
  • TPS:每秒成功完成的业务请求数量,是衡量系统性能的一个非常重要的指标,反映系统处理能力,越大越好。
  • 不同行业不同业务可接受的TPS也是不一样的。一般互联网电子商务为10000TPS-100000TPS;互联网小型网站50TPS-100TPS;互联网中型网站100TPS-1000TPS。
  • 平均响应时间:用户从客户端发起一个请求开始,到客户端接收到从服务器端返回的响应结束,整个过程所耗费的时间,反映系统处理能力。不同行业不同业务可接受的响应时间是不同的。一般情况下,互联网企业在500毫秒以下;金融企业1秒以下为佳;保险企业3秒以下为佳。
  • CPU:查看性能测试的过程中CPU资源的占用率,反映系统处理能力以及应用是否稳定。
  • I/O: 磁盘的使用情况,度量磁盘读写性能
  • 内存:查看内存使用情况

4.前提条件

压测资源需提前准备好:已在云容器引擎服务中创建两台节点,一台2核4G,一台4核8G,这两台节点需要绑定弹性IP,以确保和被压测的应用网络互通。

5.测试目的

本次性能测试主要检测服务端处理能力,通过测试,将达到以下目的:

  • 为上线提供指标参考:验证在现有软硬件环境情况下,获取网站性能指标,为系统上线提供指标参考。
  • 系统的最大处理能力:在现有的软硬件环境情况下,网站能够支撑的最大处理能力。

6.测试建模

根据顾客的使用电商应用的行为数据分析,为找出现有网站能够支撑的最大处理能力。构建出3种测试模型,分别是单场景基准测试模型、单场景容量测试模型和混合场景容量测试模型。

单场景基准测试模型:测试环境确认之后,对测试模型中涉及的每个功能做基准测试。目的是检查网站本身是否存在功能缺陷。
单场景容量测试模型:针对本次网站性能测试涉及到的网站内容和用户行为轨迹,利用一定量的并发进行测试,获取其性能表现,并验证是否存在并发性问题。
混合场景容量测试模型:针对本次平台性能测试涉及到的“内容/行为轨迹/搜索”利用一定量的并发递增进行测试,验证实际可能的高压力场景,较全面的检测系统的性能表现。获取其最大并发数、平均响应时间、系统资源作为衡量指标

单场景基准测试模型:

单场景容量测试模型:

根据现网的监控数据,按照访问量的比例,构建混合场景容量测试模型:

性能标准参考:

7.测试执行

步骤一:创建资源组和测试工程
工程名称:自定义名称,例如Web-test。
描述:应用测试Demo。

步骤二:添加事务信息
根据上面的测试模型进行事务的定义,抢购活动的实际情况来看,用户抢购到商品,大概需要经历一下几个阶段:登陆>首页访问 > 搜索 > 商品浏览>加入购物车>下单>付款。期间还有网站对应的活动页面。
因此需要定义7个事务:登陆>首页访问 > 搜索 > 商品浏览>加入购物车>下单>付款。

也可以根据需要构建串联场景,验证用户操作链的性能

步骤三:创建测试任务
华为云性能测试服务测试针对测试任务关联多个事务,并为事务分配不同的压力比例,以我当前测试的电商网站为例,单场景测试采用阶梯式压测模型(可以是递增的,也可以无规律的)快速找到压力瓶颈点:

而对于混合测试模型,则在混合测试任务下关联所有事务,并分配不同的比例:

步骤四:查看实时报告
任务启动后查看实时报告
首页访问,100并发用户数持续时间100s,可以看到在100并发时,都是正常返回。

当300并发用户数持续时间100s,已经出现了部分响应超时的现象。说明网站当前还无法支持300个并发访问用户的正常请求。当用户数达到500并发用户数持续时间100s,响应超时的数量高于正常返回的数量,出现异常。
查看对应的资源占用情况,CPU使用率,在性能测试的过程中,CPU的使用率长期超过90%,与业界标准比较,CPU的使用率超过了85%。内存使用率在12%以下,比较稳定。查看后端其中一个数据库节点的资源,资源的使用率较低,相较于前端,可得出性能瓶颈主要在前端的业务代码中。

然后根据定位情况进行优化后反复测试调优就行了。

步骤五:查看离线报告
也可以在无人值守的情况下完成测试后查看离线报告,内容与实时报告一致。

8.结果测试分析

  1. 统计维度:报告的TPS,时延、并发等统计维度均为事务,如事务中有请求多个报文,只有在多个请求报文均正常返回会认为成功,时延也是多个请求报文的求和值
  2. 响应超时:出现该情况下是在设置的响应超时时间内(默认5S),对应的TCP连接中没有响应数据返回,会将本次事务请求统计为响应超时,出现原因一般是被测服务器繁忙、崩溃、网络带宽被占满等
  3. 比对失败:从服务器返回的响应报文不符合预期(针对HTTP/HTTPS默认的预期响应码为200),比如服务器返回404,502等。出现原因一般为高并发情况下被测服务无法正常处理导致的,如果分布式系统中数据库出现瓶颈、后端应用返回错误等
  4. 解析失败:响应报文已全部接收完成,但是部分报文丢失导致整个事务响应不完整,这种情况一般需要考虑网络丢包
  5. 带宽统计:报告统计的是性能测试服务执行端的业务数据包带宽,上行表示从性能测试服务发出的流量,下线表示接受到的流量。如果是外网压测场景,您需要关注执行机的EIP带宽是否可以满足上行带宽的要求。而下行带宽需要关注单台执行机是否超过1GB
  6. TPS与并发用户及时延的关系:TPS是指云性能测试服务在统计周期内每秒从被测服务器获取到的响应事务实时统计,TPS=并发用户/平均响应时延。因此在测试过程中往往会发现并发用户增加了但是TPS没有增加,其原因是由于时延上升了
  7. 如何判断被测应用优劣:根据应用本身定义的服务质量定义,最佳状态是没有任何响应失败、比对失败的情况,如果有,需要在服务质量定义范围之内,通常情况下不超过1%,同时响应时延越低越好(2S内体验较好,5S内可以接受,超过5S则需要考虑优化),TP90,TP99指标可以客观反映出90%,99%用户的体验时延

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.luyixian.cn/news_show_706004.aspx

如若内容造成侵权/违法违规/事实不符,请联系dt猫网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

阿里云MVP课堂:零基础建站,满足你拥有自己网站的心愿

2019独角兽企业重金招聘Python工程师标准>>> 很多人都有一个建站的心,但是由于没有相关的技能,导致最后不了了之。云计算,让一切变得简单起来,零基础也能很快搭建出自己的网站,满足你的心愿。 建站总体来说…

KindEditor 上传漏洞致近百个党政机关网站遭植入

开发四年只会写业务代码,分布式高并发都不会还做程序员? >>> 2月21日消息,近日,安恒明鉴网站安全监测平台和应急响应中心监测发现近百起党政机关网站被植入色情广告页面,分析发现被植入色情广告页面的网站都…

反击黑客之对网站攻击者的IP追踪

ip追踪是一件比较难实现的,因为我只有一个ip,而且在没有任何技术支持下对该ip追踪,同时我在公司也没有服务器权限,仅有后台,一般的ip追踪技术分类,反应式ip追踪,主动式的追踪,分享的…

网站安全之nginx的配置创建访问网站密码认证

最近我们Sinesafe在处理nginxphpmysql架构的客户网站安全方面要配置后台的二级密码访问验证处理过程中要用到nginx的配置来完成这个二级密码的设置安全部署。 下面由我来简要说一下在nginx配置服务中,创建访问网站密码认证的方法。 1)需要ngx_http_auth_…

[翻译 EF Core in Action 2.1] 设置一个图书销售网站的场景

Entity Framework Core in Action Entityframework Core in action是 Jon P smith 所著的关于Entityframework Core 书籍。原版地址. 是除了官方文档外另一个学习EF Core的不错途径, 书中由浅入深的讲解的EF Core的相关知识。因为没有中文版,所以本人对其进行翻译。 预计每两天…

干货!4个资源满满的网站,带来意想不到的帮助

你是不是还没有好用的网站资源?不用郁闷!今天为大家整理了5个资源满满的网站,每一个都是良心之作。 一.茶杯狐 这个名字是不是听起来就觉得特别文艺呢,其实啊,它是一个海量免费资源的网站呢!里面可包含了电…

搭建IIS并配置网站之旅

配置本地IIS这个过程,很羞愧的说,大概花了一个月之久…… 最开始,有需要用到了IIS,然后就着手配置,然后就遇到了问题,然后当时事很多,这又不是很急,就搁置了…… 在历经了一个月之后…

windows使用nginx实现网站负载均衡测试实例

http://www.jb51.net/article/22470.htm 如果你关注过nginx,必定知道nginx这个软件有什么用的,如果你的网站访问量越来越高,一台服务器已经没有办法承受流量压力,那就增多几台服务器来做负载吧。做网站负载可以买硬件设备来实现&a…

网站 admin.php,caozha-admin(PHP网站后台管理框架)v1.7.1官方安装版

caozha-admin是一个通用的PHP网站后台管理框架,基于开源的ThinkPHP开发,特点,易上手,零门槛,界面清爽极简,极便于二次开发。功能介绍caozha-admin后台管理框架功能:1、系统设置2、管理员管理3、…

element 修改分页样式_如何给wordpress网站的文章列表,添加分页效果?可以通过2种方式...

在上一章节中,我们为wordpress网站的首页添加了全站文章列表。一个wordpress网站不可能只有几篇文章,可能会有成千上万的文章,作为一个wordpress博客主题模板,一般情况下,不可能让所有的文章在一个页面一下子全部显示出…

jsp项目放入宝塔windows环境_《鸡站群组》-教你建站(1.1) 下载并配置windows宝塔面板...

(Linux请自己参考官网教程哈)欢迎访问 鸡站论坛各位站长们好呀 欢迎来到由鸡站群组独家呈现的建站教程 本教程会围绕各大站长的需求 以各种建站源码的使用以主要内容进行教学“工欲善其事,必先利其器” 作为一位站长 我们需要建站环境对网站进…

php网站404页面302,404页面该怎么做?

建立404页面的方法是:在“.htaccess”文件中加入“ErrorDocument 404/Error.html”代码;然后建立一个简单的html的404页面,并命名为“Error.html”;最后将该“Error.html”文件放置在网站根目录下即可。404页面的目的是&#xff1…

阿呆做网站(3)--建数据库

Just do something!只是玩玩,纯属入门,熟练熟练。这次做个BBS,实现最基本的功能又加了个用户类型表(ForumUserClassTab)用来管理斑竹类型用户类型表(ForumUserClassTab) --|--用户类型ID(UserClassID) |--用户类型名称(U…

海洋工作室——网站建设专家:How to check the SQL statement execute time on SQL Server ?...

Check this,setstatisticsprofile onsetstatisticsio onsetstatisticstime ongo<Your SQL Statement goes here>gosetstatisticsprofile offsetstatisticsio offsetstatisticstime off转载于:https://www.cnblogs.com/OceanChen/archive/2009/10/12/1581791.html

boot spring test 文档_SpringBoot入门建站全系列(五)使用Spring-data-jpa操作数据库

SpringBoot入门建站全系列&#xff08;五&#xff09;使用Spring-data-jpa操作数据库SpringBoot操作数据库有多种方式&#xff0c;如JDBC直接操作:太古老了&#xff0c;没人愿意这样玩Mybatis插件&#xff1a;比较时髦&#xff0c;比较适合sql复杂&#xff0c;或者对性能要求高…

腾讯Groupon合资团购网站 高朋网悄然上线

国内各种团购网站的鼻祖&#xff0c;全球最大团购网站Groupon将与腾讯合资进入中国市场的消息流传已久。今天&#xff0c;Groupon中国版网站高朋网&#xff08;www.gaopeng.com&#xff09;已经悄然上线。 高朋网取自Groupon谐音。目前&#xff0c;高朋网站仅有用户邮箱注册功能…

学用MVC4做网站五:5.1添加文章

五、文章 在【ArticleController】添加[UserAdd()]action /// <summary>/// 添加文章/// </summary>[UserAuthorize]public ActionResult UserAdd(){return View(new Article() { CommonModel new CommonModel() });} 右键添加模型类为Article的强类型视图UserAdd…

knowladge_网站开发_jQuery插件_Clock Demo

今天要用jQuery做一个Clock Demo. 查了查相关的资料 找到了一个很好的插件设计 http://css-tricks.com/css3-clock 转发一下这个文章 Old School Clock with CSS3 and jQuery PUBLISHED NOVEMBER 17, 2008 BY GUEST AUTHOR Hi everyone, my name is Toby Pitman and Chris has…

opengl教程 linux,绘制基本的几何图形 - OpenGL编程学习实战教程_Linux编程_Linux公社-Linux系统门户网站...

第2章.编写一个的钟表程序第一节.绘制基本的几何图形矩形、三角形、圆形等这些都是经典的几何图形&#xff0c;他们都由线构成的(圆形看成是有很多根短线收尾相连围成的)&#xff0c;而线都是点构成的。想起了某一年狗血的高考题。....而在OpenGL中画线很简单&#xff0c;你指定…

让那些为Webkit优化的网站也能适配IE10(转载)

转载地址&#xff1a;http://www.w3cplus.com/css3/adapting-your-webkit-optimized-site-for-internet-explorer-10.html 特别声明&#xff1a;此篇文章由David根据Charles Morris的英文文章原名《Adapting your WebKit-optimized site for Internet Explorer 10》进行翻译&am…