简体中文   |   English

15201356601

爆发式Web压力测试方案
方案背景

随着互联网的发展,用户的不断增加,各类基于HTTP/HTTPS协议部署开发Web网站、管理系统,甚至一些手机APP等,不可避免的面临以下问题:

  • 业务性能难以估计: 难以进行大量用户真实仿真测试,无法确定真实性能
  • 短板瓶颈难以定位: 网络环境复杂,难以定位性能瓶颈是业务服务器还是网络设备
  • 系统逻辑功能难以快速验证: 难以便捷测试系统功能进行敏捷开发
方案介绍

Supernova爆发式Web业务压力测试方案,应用DPDK技术于网站的压力测试,与其他的传统软件相比,其性能和对环境的模拟是业内领先的。通过Supernova工具模拟能够模拟数十万的虚拟用户,同时发送HTTP参数化的请求给Web 服务器。对被测系统实行压力负载测试,监控被测系统在不同业务不同压力下的性能表现,找出潜在的性能瓶颈并对其进行分析、优化,满足进行超高性能的压力测试。

该测试方案支持不仅支持对单个业务接口进行测试,还支持按比例混合多个接口进行压力测试,更符合实际线上应用场景,另外还能模拟业务处理的过程,测试业务逻辑,如登录、下单等过程,更贴近真实操作。具有以下特性:

  • 可以自动获取和保存cookie,完成登录认证和会话保持;
  • 多接口混合时,支持每个接口新建TCP连接;
  • 支持接口业务关联测试,可以从响应中提取变量,在发送请求时替换;
  • 支持发送请求参数化,自动替换为变量的内容;
  • 支持从csv格式的文件中,导入大量的变量,每个虚拟用户替换;
  • 支持在响应中使用断言;
  • 支持上传解析调用Jmeter脚本及变量;
  • 支持上传HAR文件和PCAP文件解析应用业务流程;
  • 支持到导入Jmeter脚本;
  • 支持解析Jmeter日志jtl文件,格式化Excel文件、HTTP服务器日志。
测试对象

基于HTTP/HTTPS协议Web业务组网方式,一般入口处是LVS集群或F5四层负载均衡,后边是Nginx七层负载均衡,中间可能会有网关转发流量,最后是服务器集群提供服务,Supernova爆发式Web业务压力测试方案能够对全链路以及链路上的各个节点进行测试。

对LVS/F5进行压力测试

Supernova测试网口通过交换机等设备与入口LVS/F5相通,LVS/F5可配置静态文件,Supernova模拟大量并发虚拟用户,发送HTTP/HTTPS流量请求,对入口LVS/F5进行压力测试,找出入口LVS/F5的性能瓶颈。

对Nginx进行单台压力测试

Supernova测试网口通过交换机等设备与NG(Nginx简称)相通,通过配置,模拟大量并发虚拟用户,发送HTTP/HTTPS流量请求,对NG进行压力测试,找出NG的性能瓶颈。

对GW进行单台压力测试

Supernova测试网口通过交换机等设备与组网中GW(网关简称)相通,模拟大量并发虚拟用户向服务器发送HTTP/HTTPS流量请求,对GW-服务进行压力测试,找出GW-服务的性能瓶颈。

对单台服务器或服务器集群进行测试

Supernova测试网口通过交换机等设备与组网中单台服务器或服务器集群相通,通过配置,模拟大量并发虚拟用户发送HTTP/HTTPS流量请求,对单台服务器或服务器集群进行压力测试,找出单台服务器或服务器集群的性能瓶颈。

对全链路进行测试

Supernova测试网口通过交换机等设备与入口LVS/F5相通,通过配置,模拟大量并发虚拟用户,向服务器发送HTTP/HTTPS流量请求,对全链路进行压力测试,找出全链路的性能瓶颈。

方案优势
Windows Jmeter Windows LoadRunner
Linux/C/DPDK Windows/Java Windows/C++

Supernova与Jmeter、LoadRunner在同样环境下,使用同样测试逻辑,对同一服务器进行测试,测试条件一致,在低压力情况下,测试结果基本一致。

单接口 并发虚拟用户 Supernova-20C Jmeter5.1.1 LoadRunner12
事务完成次数 平均响应时延(ms) 中断% 事务样本数 平均响应时间(ms) 异常% 事务通过次数 平均响应时间(ms) 异常%
/mantis/login_page.php 1 1,259 47 0.00 1,215 48 0.00 1,192 50 0.00
10 11,275 53 0.00 11,067 53 0.00 10,958 54 0.00
20 11,381 101 0.00 11,483 103 0.00 11,234 105 0.00
30 11,334 153 0.00 11,404 157 0.00 11,221 159 0.00
50 11,198 260 0.00 11,239 267 0.00 11,072 268 0.00
80 11,147 407 0.00 11,136 430 0.00 / / /
100 11,236 497 0.00 11,165 537 0.00 / / /
200 11,260 978 0.46 11,143 1,080 0.00 / / /
300 11,348 1,433 1.41 11,103 1,631 0.00 / / /
500 11,727 2,290 5.43 11,313 2,679 1.64 / / /

LR自带订票系统登录业务测试结果,在低压力情况下,测试结果基本一致。

LR自带订票系统login事务 并发虚拟用户 Supernova-20C Jmeter5.1.1 LoadRunner12
事务完成次数 平均响应时延(ms) 中断% 事务样本数 平均响应时间(ms) 异常% 事务通过次数 平均响应时间(ms) 异常%

事务中包含的请求页面:

  • /WebTours/
  • /WebTours/header.html
  • /cgi-bin/welcome.pl?signOff=true
  • /WebTours/images/hp_logo.png
  • /WebTours/images/webtours.png
  • /cgi-bin/nav.pl?in=home
  • /WebTours/home.html
  • /WebTours/images/mer_login.gif
  • /cgi-bin/login.pl
  • /cgi-bin/nav.pl?page=menu&in=home
  • /cgi-bin/login.pl?intro=true
  • /WebTours/images/flights.gif
  • /WebTours/images/itinerary.gif
  • /WebTours/images/in_home.gif
  • /WebTours/images/signoff.gif
1 120 0.497 0 118 0.503 0 114 0.52 0
2 238 0.503 0 230 0.515 0 232 0.518 0
5 568 0.526 0 555 0.536 0 577 0.519 0
10 1103 0.541 0 1105 0.538 0 1091 0.549 0
20 1243 0.959 0 1270 0.926 0 1254 0.96 0
50 1396 2.115 0 1382 2.129 0 1382 2.182 0

LoadRunner和Jmeter对使用并行下载非HTTP资源文件时,虚拟用户数量在50个以上时,实际上服务器压力是40%左右,但是测试结果出现性能降低。

依赖于windows和java或c++程序的调度,线程多时本身运行速度会降低。

Loadrunner 12.02

录制方式:基于HTML的脚本,仅包含明确URL的脚本,非HTML生成的元素在当前脚本步骤内录制

脚本配置:userSession关联,用户名使用变量name,变量值jojo10-jojo60

虚拟用户数量 事务通过次数 平均响应时间(s) 最小响应时间(s) 最大响应时间(s) 失败次数 测试时长
1 219 0.248 0.273 0.312 0 1min
2 410 0.291 0.234 0.702 0 1min
5 443 0.673 0.413 0.86 0 1min
10 421 1.431 0.612 1.687 0 1min
20 120 11.087 6.438 11.687 0 1min
50 150 23.758 21.889 26.281 0 1min
Jmeter 5.1.1

用户名使用变量name,变量值jojo10-jojo60

login.pl从HTML中下载资源文件

虚拟用户数量 事务通过次数 平均响应时间(s) 最小响应时间(s) 最大响应时间(s) 失败次数 测试时长
1 150 0.397 0.316 0.477 0 1min
2 269 0.442 0.316 0.857 0 1min
5 251 1.19 0.37 4.619 0 1min
10 261 2.298 0.475 6.779 0 1min
20 354 3.41 0.536 8.311 0 1min
50 298 8.463 1.243 22.517 0 1min

Supernova在Web业务测试上,具有超高性能、超大并发、超细精度、超简部署等方面的优势。

  • 超高性能,HTTP TPS可达200万次以上,HTTPS TPS可达20万次以上;
  • 超大并发,能模拟20万个以上的虚拟用户并发访问测试接口;
  • 模拟多IP和路由,支持复杂网络环境,可以在任何网络环境中部署。Jmeter不支持,LoadRunner部分支持;
  • Supernova测试时,负载精度可达万分之一秒,压力更均衡,在服务器不出现异常的情况下,每次测试结果不会出现忽上忽下的波动;
  • HTTPS支持国密算法;
  • 支持自环测试,可以同时模拟客户端和服务器;
  • 支持虚拟机和云版本,可以测试在云内对服务器等进行测试;
  • 我们是国产商业软件,可以提供更好的定制服务。