摘要:随着互联网的快速发展,电子商务平台的业务量日趋增多、集群规模迅速扩大,电子商务平台的系统性能面临极大的挑战。因此,发现并规避电子商务平台的性能隐患对电商及用户都有重要的意义。本文通过进行不同程度的压力测试,模拟电子商务平台面临的多种流量场景,探究并发用户数对电子商务平台性能的影响;通过录制不同模式的脚本,模拟电子商务平台运作的复杂业务场景,探究读写操作对电子商务平台性能的影响。实验结果表明,高并发用户数场景下,电子商务平台的平均响应时间增大,错误率明显提升;脚本中写操作占比较高时,电子商务平台平均响应时间增大,吞吐量降低。
关键词:互联网;压力测试;电子商务平台
中图分类号:F49 文献标识码:A 文章编号:1671-2064(2019)17-0000-00
0 引言
随着互联网的快速发展,电子商务平台已经渗入到我们生活的方方面面中。随着业务量的增大,对服务器和数据库承载力要求升高,这就需要对电子商务平台的性能进行不断优化。因此,人们提出对电子商务平台进行压力测试,即通过使用自动化的测试工具来模拟生成多种正常、峰值以及异常的负载,进而对系统的各项性能指标进行测试[1],探究系統存在的风险及性能优劣。常见的压力测试工具有Apache Jmeter[2]、Load Runner[3]等。本文实验目的是探究并发用户数和读写操作对电子商务平台性能的影响。本文通过压力测试工具Apache Jmeter对电子商务平台进行压力测试,使用控制变量法,分别改变并发用户数和脚本中读写操作比例进行多次实验,针对每次压力测试的平均响应时间、吞吐量和错误率等几项性能指标,提取测试结果并进行结论分析。实验结果表明,并发用户数规模越大,电子商务平台的平均响应时间越长,错误率越高,即平台的性能会降低。具体表现为,并发用户数从100增长到5000时,平均响应时间增大了约1.4倍,错误率提高了约10%;并发用户数增长到10000时,平台无法正常运行,出现停滞状态。写操作比例较高时,平台平均响应时间增大,吞吐量降低,运行能力下降。具体表现为,读写操作之比为8:2的脚本与10:0脚本相比,吞吐量降低了21.5%,平均响应时间增大了41.4%。
1 实验方法
1.1 实验目的
通过模拟电子商务平台真实场景对其进行压力测试,探究并发用户数和脚本中读写操作比例对电子商务平台性能的影响。
1.2 实验工具
(1)Apache Jmeter是一种的基于Java的压力测试工具,用于对软件做压力测试。通过模拟巨大的负载,对待测目标进行不同压力程度测试,从而发现系统可应对的最大强度以及系统性能。(2)Badboy是一个脚本录制工具,它提供了一个浏览器界面,可以记录用户对网页的一系列操作,最终保存.jmx文件,形成一个测试脚本。(3)Jpetstore[4]是一个网上宠物商店,这个小型电子商务平台包含了Web层应用所需具备的要素,例如注册、登录、商品查询、信息展示等。
1.3 实验步骤
(1)录制脚本。录制脚本是将用户在电子商务平台Jpetstore的一系列操作通过BadBoy软件记录下来,以jmx脚本文件格式保存。脚本中对数据库的事务操作可以分为读操作和写操作。读操作包括浏览界面等从数据库读出数据的操作;写操作包括提交订单等向数据库增添内容的操作。读写比例是指在客户访问电子商务平台的一系列操作中,读操作的数量和写操作的数量之比。(2)压力测试。压力测试是通过自动化的测试工具Apache Jmeter 模拟生成多种正常、峰值以及异常的负载,进而对系统的各项性能指标进行测试。进行压力测试时,通过Apache Jmeter 导入录制好的jmx脚本文件,并设置线程数、循环次数,添加监听器(如聚合报告、察看结果树等)。测试结束后,记录平均响应时间、错误率和吞吐量等指标,用于分析电子商务平台的性能。
2 实验设计及结果
本文设计了两组实验,分别探究并发用户数对电子商务平台性能的影响以及测试脚本中读写操作比例对电子商务平台性能的影响。
2.1 实验一:探究并发用户数对电子商务平台性能的影响
(1)录制脚本。实验一中录制的测试脚本事务信息如图1所示。用户访问Jpetstore后,先登录并认证个人信息,再察看并挑选商品,更改购物车信息后确认订单。
(2)压力测试。设置Apache Jmeter 中的并发用户数(线程数)分别为100、500、1000、5000、10000,每个线程数下进行五次实验,平均响应时间取平均值(去掉最高值,去掉最低值,再取平均)。本次实验保持其他条件一致,仅改变并发用户数,即线程数。实验结果如表1所示。
(3)实验结果及分析。如表1所示,当线程数从100增长到5000时,平均响应时间逐渐增大,错误率逐渐升高。线程数由100升至5000,平均响应时间增长约1.4倍,错误率由1.10%升高到了11.67%。因此,随着并发用户数规模的扩大,电子商务平台的性能会降低。当线程数增长到10000时,聚合报告中“总体”的Sample大小(运行的事务总数)并未达到预期,且相差很大,平台无法正常运行。并且,在压力测试过程中会出现错误,这些错误是操作时请求和响应数据超时导致的。出现这一现象的原因有可能是用户并发数过高,从而导致集群服务器在读取数据时出现响应超时。或是计算机已经完成了多组数据的压力测试,若在前面的测试中,发生过系统崩溃的情况,或因为每次测试的负载都较大,与其一贯工作量出入大,也可能会影响它处理数据的能力。在进行线程数为500的实验时,大部分实验的错误率在0.26%-0.36%之间,但后面进行的实验中出现错误率大于6%的情况,故对最终数据的影响较大,因此导致平台性能下降的原因也可能是计算机已经进行了多组实验而影响其运行能力。
2.2 实验二:探究读写操作对电子商务平台性能的影响
(1)Web事物性能分析。本文首先针对脚本中各事务的平均响应时间进行实验,实验结果如表2所示。SignonForm表示登錄事务。实验结果显示,第一次登录SignonForm耗时特别长,之后耗时明显降低。主要原因是首次登录系统时,需要校验用户信息,所以耗时最长,超过了1min。之后的测试由于有缓存信息,因此耗时会明显降低。NewOrder表示提交订单事务。实验结果显示,三次测试中NewOrder的平均响应时间相较于其他事务都明显较高。由于提交订单是一个写入数据库的操作,因此写操作明显要比读操作更能影响系统的性能。因此,接下来将探究读写操作对电子商务平台性能的影响。
(2)录制脚本。本次实验录制了读写比不同的脚本。为了保证测试中结果的可对比性,在保证两次脚本录制的事务数相同的情况下,改变脚本中读写操作占比情况。实验二录制的两个不同读写操作占比的脚本如图2、图3所示。
(3)读写比测试。控制线程数为100,分别对脚本一、二进行测试,结果表3所示。
(4)实验结果及分析。如表3所示,写操作会在一定程度上影响电子商务平台的性能。在两组操作总数相同的实验中,测试一写操作占比为20%,测试二没有写操作。由实验数据可知,写操作占比20%的情况下,吞吐量降低了21.5%,平均响应时间增大了41.4%。读操作是读取数据库中原有的数据,而写操作涉及对数据库内容的修改,因此写操作耗时更长,对系统性能的影响更大。
3 结语
本文测试了不同并发用户数下平台的平均响应时间和错误率。发现随着并发用户数增大,平均相应时间增大,错误率升高,但若并发用户数过大,电子商务平台遇到瓶颈,会系统崩溃,无法正常运行,错误率达到100%。同时,本文测试了脚本中不同读写操作占比下平台的平均响应时间和吞吐量。读操作和写操作所需要的系统响应时间不同,在每次运行中,写操作耗时较长,因此写操作占比多的脚本吞吐量降低,平均响应时间增大。
参考文献
[1]陈铁南,唐震,王晓冉.基于云计算的大规模性能测试服务平台[J].计算机科学,2014(9):63-66.
[2]JMeter工具使用初探[Z].
https://blog.csdn.net/loadrunn/article/details/58601709.
[3]郭旭敏,王小厅.LoadRunner在软件性能测试中的应用与研究[J].太原学院学报(自然科学版),2018(3):32-35.
[4]谷志峰,叶传奇,张虎.基于JpetStore案例的项目驱动法在JSP教学中的研究与实践[J].西部素质教育,2016(8):55-57.
收稿日期:2019-07-19
作者简介:马楠(2002—),女,回族,云南昆明人,云大附中星耀学校高中在读,研究方向:压力测试。