随着电商的高度发展,其技术和机制均面临许多机遇和挑战。本文将通过 Jpetstore 的简单网购架构平台、Badboy 的录制脚本功能、JMeter 的抗压测试功能以及 EasyAPM 的性能测试功能,了解电子商务智能技术的内部结构及运行机制,尝试模拟电商平台在短时间内大量用户涌进情况下可能出现的隐患。
一、电商发展现状
电子商务,简称电商,是借助互联网实现贸易过程中各阶段的贸易活动。相对于传统商业模式存在诸多弊端,如库存弊端、价格弊端、宣传弊端等,电子商务技术可使得人们获取信息的方法发生极大的改变,获取信息的速度也得到极大提高;与此同时,购物方式也随之改变,网购变得更加舒适与便捷;新型教育方式逐渐普及,网课慢慢进入老百姓的家中;休闲娱乐方式得到前所未有的改变,直播、电子游戏等新兴产物渐渐被人们接受。
目前我国电商平台已形成取中间化、去中心化、去边界化,多行业、多领域、全方位生态圈布局。技术方面:作为我国最知名的电商平台,淘宝技术架构经历了 LAMP 架构→Java 架构→分布式架构→IDC 架构。运行机制方面:电商平台的运行机制大体上可以分为“浏览商品”、“加入购物车”、“提交订单”以及“支付订单”四部分。
随着电商的发展,云计算、物联网、互联网+等新兴技术的兴起,大数据成为当代的主旋律,其必定会面临众多机遇与挑战:
①集群规模的增大,系统故障发生的概率也增加,易出现节点失效、网络失效、软件错误以及资源限制等故障情况。
②洪峰流量的上涨,会带来服务器与数据库的压力。
③资源问题、业务扩展性还有容灾问题。
二、实验平台及工具介绍
电商平台面临诸多风险,通过上线前的性能检测和故障诊断可以在一定程度上降低电商平台故障发生概率。电商平台可以使用压力测试工具测试系统,并监测系统运行时的应用性能,从而根据性能变化趋势定位系统中的瓶颈或故障。其主要包括:压力测试(STRESS TESTING),负载测试(LOAD TESTING),性能测试(PERFORMANCE TESTING)。 LoadRunner 的三大主要模塊为: VirtualUser Generator(用于录制性能测试脚本),LoadRunner Controller(用于创建、运行和监控场景),LoadRunner Analysis(用于分析性能测试结果)。
(一)实验平台:JPetStore
以一个小型宠物商店电子商务平台为原型,展示了一个带有简单数据库连接的 J2EE Web 层的应用。它由若干模块组成,包括:控制模块、购物车模块、登陆模块、消息模块、类别模块,客户模块。通过创建模型、界面和控制器三层将面向对象的设计与可视化接口分开。
(二)主要使用工具
1.EasyAPM:
由中科院软件所所研发的用于应用执行时实现软件性能监测、业务流程追踪的一款专业工具,其由三个主要功能模块组成:Server、Agent和Web。其中,Server负责处理Agent发送过来的trace和系统运行状态信息并将其储存在MySQL数据库中;Web应用负责对 trace及系统运行时信息进行可视化展示,用户可以通过 Web 查看所有的监测信息;EasyAPM Server 可以接收多个agent的链接。
2.Apache JMeter
它作为一款广为流传的开源测压产品,有三大主体功能:一是可以用于测试静态和动态资源;而是可以对服务器、网络或对象进行负载模拟,通过施加不同的压力测试其强度、分析整体性能;三是可以对应用程序做功能测试和回归测试,允许使用正则表达式创建断言。其特点包括:对 HTTP、FTP 服务器、数据库进行压力测试和性能测试;完全的可移植性;完全轻量组建支持包;完全多线程;缓存和离线分析 /回放测试结果;可链接的取样器;具有提供动态输入到测试的功能;支持脚本编程的取样器等。在设计阶段,JMeter能够充当 HTTP PROXY(代理)来记录浏览器的 HTTP 请求,也可以记录Apache 等 WebServer 等 log 文件来重现 HTTP 流量,并在测试运行时以此为依据设置重复次数和并发度(线程数) 来进行压测。
三、挖掘电商平台内部结构及运行机制
本文以Jpetstore的简单网购架构为实验平台、借助EasyAPM的流程追踪功能和Badboy的录制脚本功能,了解电子商务智能技术的内部结构及运行机制。
(一)基于EasyAPM的电商事务追踪
对数据进行可视化展示,在首页上可以清晰观察应用性能指数、吞吐量、平均响应时间以及组件所占时间百分比等数据。在数据追踪栏中,可找出概览、追踪详细、SQL语录等数据,并可以详细观察出各组件所用时间及占比。在追踪详细中,可以观测各个事务单独时间及占比,从而了解其运行的详细情况。
(二)基于Badboy 的录制脚本实验
Badboy 被用于测试和开发复杂的动态应用。它提供了强大的屏幕录制和回放功能,同时提供了丰富的图形结果分析功能,实验操作结果如图:
四、模拟电商平台在短时大量用户涌进下存在的隐患
本文利用JMeter开源测压工具,通过改变线程量,从而模拟大量用户涌进的真实情况。再利用 EasyAPM 的追踪功能与可视化显示功能,从宏观和微观两个方面清晰的找到并分析可能存在的隐患。
(一)基于JMeter 的压力测试
分别设置线程量为100、500、1000,记录不同参量下的测试结果如下:
可以清晰看出,平均值、偏高、中值随线程量增长而增长;而吞吐量在上升至一个高峰后,会出现停滞或下降。
(二)基于EasyAPM 的性能诊断
诊断针对注入了错误和异常的问题电商平台进行,错误的挖掘过程按照如下流程,循环往复:
①发现错误
②通过EasyAPM初步观测错误内容
③进入Web具体查找错误原因
④展开事务追踪,找到错误
最后,记录数据,进行多次实验,总结归纳出现的异常类型。
(三)存在隐患分析
(1)电商平台面临大规模用户访问时,有如下几个组件占用时间较长:
Org/apache/struts/action/ActionServlet.doPost0
Org/apache/tomcat/websocket/server/WsFilter.doFilter()
(2)电商平台面临大规模用户访问时,以下事务可能会导致系统性能下降:
jpetstore/shop/viewCategory.shtml
jpetstore/shop/newOrderForm.Shtml
jpetstore/shop/signon.shtml
jpetstore/shop/index.shtml
(3)分析电商平台可能会出现的异常类型及其原因大体有以下几点:
五、结语
本文在学习电商的基础上,利用 Jpetstore 的简单网购架构平台、Badboy 的录制脚本功能、JMeter 的抗压测试功能以及 EasyAPM 的性能测试功能,了解电子商务智能技术的内部结构及运行机制,模拟电商平台在短时间内大量用户涌进下的情况,分析可能存在的错误类型有操作超时、数据库查找异常、算数异常这三类。
(作者简介:丛川奇,威海紫光实验学校高二一班学生。)