性能测试PTS(Performance Testing Service)是面向所有技术相关背景人员的云化性能测试工具,孵化自阿里内部平台。有别于传统工具的繁复,PTS以互联网化的交互,面向分布式和云化的设计,更适合当前的主流技术架构。无论是自研还是适配开源的功能,PTS都可以轻松模拟大量用户访问业务的场景,任务随时发起,免去搭建和维护成本。更是紧密结合监控类产品提供一站式监控、定位等附加价值,高效检验和管理业务性能。

脚本工具:Apache JMeter

压测平台: PTS

测试目的

供应链客户端往往由于生产环境复杂,会产生卡顿现象,故展开本次调优性能测试境产生卡顿现象,通过压测来了解网关是否存在问题。

测试原则

1.   选择用户使用频率较高的业务功能

2.   选择用户核心业务功能

3.   监控和分析系统各服务器的性能,同时也包括应用服务器的性能问题

4.   重点分析交易的响应时间,即客户端发起请求,到应用服务器返回结果到客户端的时间,包括网络传输的时间,但不包括客户端应用程序处理返回结果的时间。

测试方法

利用Jmeter模拟前台客户端发起Socket协议请求,即在每个测试用例中,由Jmeter发送前台应用程序的Socket报文到后台应用服务器,测试后台应用服务器和数据库服务器处理客户端应用请求的能力。

测试指标

1、交互相关

  • 交互数量
  • 交互响应时间

2、应用服务器相关

  • CPU使用率
  • 内存使用率

测试环境

本次性能测试在uat环境中执行,使用单网关、单服务器进行压测。

生产环境目前是10个网关,8台服务器。

测试数据量

在生产环境中已增加以下业务数据,并在测试用例中挑选有代表性的业务数据进行测试:

编号

业务类型

业务数据量

1

登录

300

2

序列号扫描

300

3

订单查询

50

4

包装号校验

300

5

组建序列号扫描

300

测试脚本的创建

  1. 将一个线程组添加到测试计划中,单击测试计划 > 添加 > Thread (Users) > 线程组
  2. 在线程组中添加采样器(Sampler),单击线程组 > 添加 > Sampler > 对应的 Sampler,并配置每个 Sampler。
  3. 在线程组中添加监听器 View Results Tree
  4. 运行脚本。通过 View Results Tree 监听器查看脚本是否运行正常。

WebSocket Open Connection

将 WebSocket Open Connection Sampler 添加到线程组。单击线程组 > 添加 > Sampler > WebSocket Open Connection

如何安装 JMeter-WebSocketSampler

下载最新的 JMeter-WebSocketSampler,如 JMeterWebSocketSamplers-1.2.1.jar。

将该文件放置到 JMeter 的安装目录(…/lib/ext)下。

重启 JMeter。

如果插件安装成功,JMeter GUI 中可看到以下新增的选项:

  1. 配置元件选项(Config Element):WebSocket Binary Frame Filter、WebSocket Text Frame Filter 和 WebSocket Ping/Pong Frame Filter;
  2. 断言选项(Assertions):Binary Response Assertion;
  3. 察看结果树选项(View Results Tree):Binary;

说明:我们以 Gateway Echo 服务来创建我们的脚本(ws://echo.websocket.org)。这是一个Echo 服务,因此发送到此服务的所有消息都将回显给客户端。

当前的 Sampler 将建立 WebSocket 连接。相关的配置如下:

配置项

示例值

说明

协议

WS

协议可以是 WS 或 WSS(Secure WebSocket)。使用 WSS 进行加密连接。

Server name or IP

echo.websocket.org

域名 或 IP

Port

80

端口

Path

( 空)

可为空

Connection timeout(ms)

20000

建连的超时时间。

Read timeout(ms)

6000

等待服务器响应的超时时间。

WebSocket Ping / Pong

将 WebSocket Ping / Pong Sampler添加到线程组,单击线程组 > 添加 > Sampler > WebSocket Ping/Pong。该Sampler用来测试 Ping/Pong 功能。

相关配置如下:

  • Pong(读)超时(ms):6000

Pong 超时表示如果 JMeter 在 6 秒内没有收到 Pong 消息,则 Sampler 将失效。此 Sampler 会复用已有连接。

WebSocket request-response Sampler

将 WebSocket request-response Sampler 添加到线程组,单击线程组 > 添加 > Sampler > WebSocket request-response Sampler。该 Sampler 将用于发送文本的一个数据帧并从服务端接收应答。

相关配置如下:

配置项

示例值

说明

Connection

use existing connection

创建新的连接或复用已有连接。

数据类型

文本

指定数据类型、请求数据和响应超时值。

Request data

PTS

请求数据,这里以文本为例

Response(read)timeout(ms)

6000

响应超时时间

WebSocket Single Write Sampler

将 WebSocket Single Write Sampler 添加到线程组,单击线程组 > 添加 > Sampler > WebSocket Single Write Sampler 此请求是非阻塞的,只是将数据发送到服务端不需要等待响应。

相关配置如下:

配置项

示例值

说明

Connection

use existing connection

创建新的连接或复用已有连接

数据类型

文本

指定数据类型、请求数据和响应超时值

Request data

PTS

请求数据,这里以文本为例

Response(read)timeout(ms)

6000

响应超时时间

WebSocket Single Read Sampler

将一个 WebSocket Single Read Sampler 添加到线程组,单击线程组 > 添加 > Sampler > WebSocket Single Read Sampler。接收服务端的消息响应需要使用这个 Sampler。

配置以下参数:

配置项

示例值

说明

Connection

use existing connection

创建新的连接或复用已有连接

数据类型

文本

指定数据类型、请求数据和响应超时值

Response(read)timeout(ms)

6000

响应超时时间

WebSocket Close

将一个WebSocket Close Sampler添加到线程组,单击线程组 > 添加 > Sampler > WebSocket Close

配置以下参数:

配置项

示例值

说明

关闭状态

二进制

关闭连接时定义的状态码,数据帧的头两个字节

响应(读取)超时(毫秒)

6000

/

此采样器将关闭现有的 WebSocket 连接,由于是协商关闭,显示原因为 “1000:sampler requested close”。

使用 View Results Tree 查看结果

  1. 将 View Results Tree 监听器添加到线程组,单击线程组 > 添加 > 监听器 > View Results Tree
  2. 运行脚本!

通过 View Results Tree 监听器,检查所有 Sampler 是否都配置正确并符合预期。在该监听器中,如果 Sampler 前面有绿色勾表示运行正常。下面罗列一些截图:

上传到PTS

将调试好的 JMeter 脚本(XML 文件)、JMeter-WebSocketSampler 的 JAR 文件和其他数据文件(如有)上传到 PTS,设置并发数和压测时间,单击保存并压测便可开始压测。

阿里云PTS分享-用性能测试工具JMeter实现基于供应链业务上对于WebSocket 协议的压测的更多相关文章

  1. jmeter针对websocket协议的压测

    之前一直没有接触过websocket协议,所以一直对websocket的压测存在疑惑,在网上参考文章并不断尝试之后,终于有所得:第一次用jmeter的websoket插件,用的ws非加密协议,请求都能 ...

  2. Jmeter使用Websocket插件测试SingalR,外加还有阿里云PTS的Jmeter原生测试爬坑日志。

    题外话:距离我的上一篇博客已经过去7年多了,我实在是个不务正业的程序员,遇到测试方面的东西总想分享一下,因为可用的资料实在太少了(包括国外的资料). 本人不喜欢授人以鱼,所以不会直接给出问题和解决方案 ...

  3. 五大问题,详解阿里云PTS铂金版

    阿里云PTS铂金版,具备强大的分布式压测能力,相比业界产品的云主机发起,该产品更快速,来源更广泛,脉冲能力和流量掌控能力更强.日前,阿里云推出了PTS铂金版尝鲜包,旨在为用户提供高性价比的最佳实践.我 ...

  4. 1 认识开源性能测试工具jmeter

    典型的性能测试工具主要有2个,Load Runner和jmeter.Load Runner是商业化的,Jmeter是开源的.下面我们认识一下开源性能测试工具jmeter. 1.jmeter是什么? A ...

  5. 探索云网络技术前沿,Sigcomm 2019 阿里云参会分享

    Sigcomm 2019简介 一年一度的网络顶级学术峰会Sigcomm于8月20日至22日在北京举行.作为ACM Special Interest Group on Data Communicatio ...

  6. 性能测试工具 jmeter 分布式压力测试实操

    性能测试工具 jmeter 分布式压力测试实操 本文在Non-GUI Mode下进行,准备好三台有jdk环境,linux操作系统,同一局域网测试机器,运行两台slave,一台master机器,进行分布 ...

  7. 转 1 认识开源性能测试工具jmeter

    1 认识开源性能测试工具jmeter   典型的性能测试工具主要有2个,Load Runner和jmeter.Load Runner是商业化的,Jmeter是开源的.下面我们认识一下开源性能测试工具j ...

  8. 性能测试工具JMeter 基础(六)—— 测试元件: 线程组

    线程组的定义: 线程组是测试计划执行的入口,所有的逻辑控制器和取样器都必须在线程组下,其他的元件根据位置的不同作用域是不同的. 线程组是每个线程都是独立运行测试脚本,一个线程组就等于一个用户,通过多个 ...

  9. 阿里云PolarDB发布重大更新 支持Oracle等数据库一键迁移上云

    5月21日,阿里云PolarDB发布重大更新,提供传统数据库一键迁移上云能力,可以帮助企业将线下的MySQL.PostgreSQL和Oracle等数据库轻松上云,最快数小时内迁移完成.据估算,云上成本 ...

随机推荐

  1. Jmeter(五十) - 从入门到精通高级篇 - jmeter 之模拟弱网进行测试(详解教程)

    1.简介 在实际工作中,网络带宽一定不会是持续稳定的保持某一个值,而是有高有低.因此为了测试场景和实际能够无限的接近,所以我们需要模拟一下来达到效果.还有就是在实际的测试工作中,会因为业务需要,有时限 ...

  2. SQL Server 动态创建表结构

    需求是,在word里面设计好表结构(主要在word中看起来一目了然,方便维护),然后复制sql 里面,希望动态创建出来 存储表结构的表 CREATE TABLE [dbo].[Sys_CreateTa ...

  3. 2020年Yann Lecun深度学习笔记(上)

    2020年Yann Lecun深度学习笔记(上)

  4. TensorFlowMNIST数据集逻辑回归处理

    TensorFlow逻辑回归处理MNIST数据集 本节基于回归学习对 MNIST 数据集进行处理,但将添加一些 TensorBoard 总结以便更好地理解 MNIST 数据集. MNIST由https ...

  5. 用NVIDIA A100 GPUs提高计算机视觉

    用NVIDIA A100 GPUs提高计算机视觉 Improving Computer Vision with NVIDIA A100 GPUs 在2020年英伟达GPU技术会议的主题演讲中,英伟达创 ...

  6. 保姆级尚硅谷SpringCloud学习笔记(更新中)

    目录 前言 正文内容 001_课程说明 002_零基础微服务架构理论入门 微服务优缺点[^1] SpringCloud与微服务的关系 SpringCloud技术栈 003_第二季Boot和Cloud版 ...

  7. 用Python爬取分析【某东618】畅销商品销量数据,带你看看大家都喜欢买什么!

    618购物节,辰哥准备分析一波购物节大家都喜欢买什么?本文以某东为例,Python爬取618活动的畅销商品数据,并进行数据清洗,最后以可视化的方式从不同角度去了解畅销商品中,名列前茅的商品是哪些?销售 ...

  8. Java @FunctionalInterface注解-6

    在学习 Lambda 表达式时,我们提到如果接口中只有一个抽象方法(可以包含多个默认方法或多个 static 方法),那么该接口就是函数式接口.@FunctionalInterface 就是用来指定某 ...

  9. SQL中的分组之后TOPN问题

    SQL分组查询然后取每一组的前N条数据 由于SQL的不同的数据库SQL的语法有些略微不同,所以我们这里采用MySQL展示. 创建表 create table person(   id         ...

  10. 题解 P2257 YY的GCD

    P2257 YY的GCD 解题思路 果然数论的题是真心不好搞. 第一个莫比乌斯反演的题,好好推一下式子吧..(借鉴了blog) 我们要求的答案就是\(Ans=\sum\limits_{i=1}^{n} ...