性能测试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. visudo

    修改sudo配置 sudo visudo 上面的意思是执行visudo这个命令, visudo其实就是用vi编辑器来编辑/etc/sudoers, 这个文件只能通过visudo来修改 或者在/etc/ ...

  2. 可视化反投射:坍塌尺寸的概率恢复:ICCV9论文解读

    可视化反投射:坍塌尺寸的概率恢复:ICCV9论文解读 Visual Deprojection: Probabilistic Recovery of Collapsed Dimensions 论文链接: ...

  3. iOS视频硬编码技术

    iOS视频硬编码技术 一.iOS视频采集硬编码 基本原理 硬编码 & 软编码 硬编码:通过系统自带的Camera录制视频,实际上调用的是底层的高清编码硬件模块,即显卡,不使用CPU,速度快 软 ...

  4. TensorRT 加速性能分析

    TensorRT 加速性能分析 Out-of-the-box GPU Performance 模型推理性能是什么意思?在为用户评估潜在的候选项时,不测量数据库查询和预筛选(例如决策树或手动逻辑)的贡献 ...

  5. MLIR算子量化Quantization

    MLIR算子量化Quantization 本文概述了MLIR量化系统的设计.虽然术语"量化"是高度过载的,用于将浮点计算转换为以整数数学表示,适配的变量进行推理的技术的相当窄的范围 ...

  6. 数据、人工智能和传感器按COVID-19新冠流感排列

    数据.人工智能和传感器按COVID-19新冠流感排列 Data, AI and sensors arrayed against COVID-19 各国政府.卫生保健专业人士和工业界争先恐后地应对Cov ...

  7. python_selenium 之yaml文件读取(以读取元素信息为例)

    一.yaml源文件编写 二.对yaml文件内容的读取 #coding=gbkimport osimport yamlcurrent_path=os.path.dirname(__file__)yaml ...

  8. JDBCTemplate基本使用

    用了jdbc连接池之后,我们会发现连接对象的复用性更高了,程序整体运行的性能也更高了.但是我们在做JDBC操作的时候还是比较麻烦,要定义sql,执行sql,设置参数,处理结果. 特别是当我们要做查询操 ...

  9. LeetCode 每日一题「判定字符是否唯一」

    我是陈皮,一个在互联网 Coding 的 ITer,微信搜索「陈皮的JavaLib」第一时间阅读最新文章,回复[资料],即可获得我精心整理的技术资料,电子书籍,一线大厂面试资料和优秀简历模板. 题目 ...

  10. 说说对 Node 中的 fs 模块的理解? 有哪些常用方法?

    一.是什么 fs(file system),该模块提供本地文件的读写能力,基本上是POSIX文件操作命令的简单包装 可以说,所有与文件的操作都是通过fs核心模块实现 导入模块如下: const fs  ...