Jmeter使用Websocket插件测试SingalR,外加还有阿里云PTS的Jmeter原生测试爬坑日志。
题外话:距离我的上一篇博客已经过去7年多了,我实在是个不务正业的程序员,遇到测试方面的东西总想分享一下,因为可用的资料实在太少了(包括国外的资料)。
本人不喜欢授人以鱼,所以不会直接给出问题和解决方案的键值对,各位看官多多包涵。
先说说这次的场景:
在开发中我们使用.Net Core的SignalR(底层实现为包括WebSocket的多个协议的封装)作为长连接方案。同时对于该长连接的压力测试也是一个非常重要的环节。
坑1:Jmeter连接SingalR
我通过Chrome查看时,看到有一个连接是连到/HubName?id=XXXXXXXXXXXX,所以我果sha断bi的直接用了这个连接。一直提示404。此时觉得应该是我的插件或者Jmeter本身又或者是我老婆不让我连接这个接口。多方尝试无果,坐飞机去曾经的人类曙光查。(7年后我还是想吐槽一下百度你真的是给我们提供了一个测试Internet连接的好工具)
查到这个: 这个是病毒不要点点了地球会爆炸!
巨硬的官方文档,重点画出来,自己看大图

这个是SignalR用来创建连接的请求,跑回Chrome一看果然有这个请求,这个请求成功后会带一个ConnectID,后面的连接可以使用这个ID做参数来连接。嗯,原来是少了这一步。少年且慢,是不是拿着葵花宝典就想着去自宫了?再继续往下看:

是的,这里写着,若不自宫亦能成功。
原来直接去对/HubName不带queryString进行连接也可以创建连接。
至于为什么之前带参数会提示404(或者409)。上面那张图自己找去
至此,连接问题解决!手动撒花~
坑2:阿里云PTS,Jmeter原生模式运行Websocket提示“启动错误”
本来准备弄个压测服务器对等的压测。某天中午睡觉梦到蛇咬自己尾巴,然后就得出了苯的分子式的这个人并不是我。不过我确实午睡的时候突然想到有没有更便宜的方案?一查果然有云压测。在根本就没有经过分析对比的情况下我选择了阿里云PTS并且让老板给我掏了158大洋买了个云玩具。
很方便的是它可以上传jar插件和参数化csv文件,这点基本解决了压测的绝大部分问题。
在自信满满的写好了WebSocket脚本并且上传好插件之后,运行起来Duang(看我嘴型),启动错误,并且没有任何什么卵提示。提交工单吧:
然后客服GG告诉我他本地打开文件确实也Duang了,说我脚本文件是不是有问题。(这里注意以下他睾贵的标题栏,并不是瘟到死,我手上没有Mac无法确认是否是跨平台的问题)

[手动黑人问号],继续追问下,GG很热心的帮我找到了错误的位置。

[手动懵逼脸1秒露出淫笑],让我想起来好像Chrome调试下,在每个WebSocket内请求的结尾都会显示一个方框。并且这个方框被复制到了测试脚本中。删掉这个方框后,请求就会超时,这让我更加确认了这是一个结束符,查阅Unicode以后更加肯定了

并且我注意到(忘了哪里找到的小道消息),1e在XML中是一个非法字符,而jmx就是xml格式。
那么我不放在脚本内部不就完了?找到脚本,勾选从发送文件内容,把包括请求内容和结束符都放到一个txt中,选择该文件。
成功启动!撒花!
坑3:接上个坑的解决方案之后
其实有一些经验的人应该注意到一个可能存在的问题:如果请求内容也放到txt中那么就无法参数化了。简单测试以后问题确认。
那么现在就在石头和硬的东西中间(Between a rock and a hard place),要么不能参数化,要么老板给我买的玩具报废。依照马克思恩格斯以及毛爷爷思想邓爷爷理论中最重要的废物利用原则,我还是想想办法吧。
Websocket的数据收发,其实和socket的数据收发形式是很像的。底层都是以字节流的方式。这也是为什么每条消息需要一个结束符来表示消息的末尾,否则服务端无法确认数据包的结束。等不到结束符SignalR也不会认为收到了消息,两边会一直等到超时为止。
既然和Socket很像,那么就有可能有粘包问题(不懂自己百度吧,我也不懂)我猜想,这里可否利用一下粘包的特性?
解决方案如下:
连接成功后,
1、创建一个WebSocket Writer,把请求内容直接写到脚本文件中,这里不发送结束符,同时不等待响应。那么这里的内容就可以参数化了
2、再创建一个WebSocket request-respone, 此时用上面文件的方式仅仅发送一个结束符,然后接收响应。
相当于把两个请求合成了一个请求,(request1&request2)-response
方案得逞,撒花!
Jmeter使用Websocket插件测试SingalR,外加还有阿里云PTS的Jmeter原生测试爬坑日志。的更多相关文章
- 阿里云linux安装jmeter并进行压测
一.阿里云linux安装JDK 1.下载安装JDK jdk官网,选择linux版本,下载并保存. (一)yum安装 安装epel的yumyuan yum install epel-release -y ...
- 压力测试(六)-阿里云Linux服务器压测接口实战
1.SpringBoot 接口打包,并用jar包方式部署 简介:用jar包方式在控制台进行启动 打包 mvn package && java -jar target/gs-spring ...
- 阿里云PTS分享-用性能测试工具JMeter实现基于供应链业务上对于WebSocket 协议的压测
性能测试PTS(Performance Testing Service)是面向所有技术相关背景人员的云化性能测试工具,孵化自阿里内部平台.有别于传统工具的繁复,PTS以互联网化的交互,面向分布式和云化 ...
- 流媒体测试笔记记录之————阿里云监控、OBS、FFmpeg拉流和推流变化比较记录
OBS设置视频(512kbps)和音频(128kbps)比特率 阿里云监控结果: 使用FFmpeg拉流到Nginx 服务器测试比特率 第二次测试,修改视频和音频比特率 OBS设置 阿里云监控 Ngin ...
- 阿里云主机SSD实例磁盘测试及IO调度算法调整
测试背景及环境说明 阿里云ECS 主机配置: 4C8G root@zabbix-master:~# grep -i "model name" /proc/cpuinfo model ...
- 阿里云RDS for SQL Server测试吐槽
最近测试了一下阿里云RDS for SQL Server,有些设计简直就是反人类,让人不得不吐槽一番. 1:控制台创建数据库时,数据库名不能包含大小字母. 如上截图所示,数据库名称不能包含大写字母,好 ...
- 国内5家云服务厂商 HTTPS 安全性测试横向对比
随着 Chrome.Firefox 等浏览器对 HTTPS 的重视,国内众多云服务厂商都相继提供 SSL 证书申购服务,但是大家有没有注意到一个细节,不同厂家申请的 SSL 证书,由于证书性能.功能差 ...
- JMeter性能测试9:阿里云服务器压测
第一步准备好jmeter脚本 第二步 将本地的jmeter脚本上传到阿里云进行验证 检验阿里云的jmeter是否能正常运行 将本地的脚本上传到阿里云使用xshell进入到该目录下 使用命令运行刚才上传 ...
- sysbench测试阿里云ECS云磁盘的IOPS,吞吐量
测试阿里云ECS 对象:在aliyun上买了一个ECS附加的云盘,使用sysbench测试云盘的IOPS和吞吐量 sysbench prepare 准备文件,10个文件,1个1G [root@iZwz ...
随机推荐
- 搭建XSS测试平台
XSS测试平台是测试XSS漏洞获取cookie并接收web页面的平台,XSS可以做js能做的所有事情,包括但不限于窃取cookie,后台增删文章.钓鱼.利用xss漏洞进行传播.修改网页代码.网站重定向 ...
- c++动态内存知识总结与疑问
书名 BOOK TITLE <Primer c++ 第5版> 基本信息 BASICS 阅读进度:第12章动态内存 阅读心得 LEARNINGS 在c++中,我知道的有静态内存.栈内存. ...
- 自定义上下文菜单,contextmenu事件
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- Hive数据倾斜的原因及主要解决方法
数据倾斜产生的原因 数据倾斜的原因很大部分是join倾斜和聚合倾斜两大类 Hive倾斜之group by聚合倾斜 原因: 分组的维度过少,每个维度的值过多,导致处理某值的reduce耗时很久: 对一些 ...
- Redis总结--【持续更新】
# 什么是Redis? Redis 是完全开源免费的,是一个高性能的key-value内存数据库,读的速度是110000次/s,写的速度是81000次/s 它有以下三个特点: Redis不 ...
- React源码解析——创建更新过程
一.ReactDOM.render 创建ReactRoot,并且根据情况调用root.legacy_renderSubtreeIntoContainer或者root.render,前者是遗留的 API ...
- 史上最详细的Docker安装手册
概述: 这个安装手册我已经使用了将近2年的时间,一直在进行完善(可以用于生产级别).使用了Centos 7系统. 一.Docker简单介绍 Docker是一个容器,使用的是Linux现有的技术,准确来 ...
- LeetCode46 回溯算法求全排列,这次是真全排列
本文始发于个人公众号:TechFlow,原创不易,求个关注 今天是LeetCode的26篇文章,我们来实战一下全排列问题. 在之前的文章当中,我们讲过八皇后.回溯法,也提到了全排列,但是毕竟没有真正写 ...
- 读者来信 | 如果你家HBase集群Region太多请点进来看看,这个问题你可能会遇到
前言:<读者来信>是HBase老店开设的一个问答专栏,旨在能为更多的小伙伴解决工作中常遇到的HBase相关的问题.老店会尽力帮大家解决这些问题或帮你发出求救贴,老店希望这会是一个互帮互助的 ...
- NCEP CFSR数据下载
一.简介 CFSR(Climate Forecast SystemReanalysis)再分析资料使用了 GEOS-5(Goddard EarthObserving System)大气模式与资料同化系 ...