使用jmeter对websocket进行压力测试

测试工具我使用的是JMeter,版本为2.11。这个是同事拷贝给我的绿色版本。只要有Java环境就可以运行(下载地址:apache-jmeter-2.11)。点击bin目录下的jmeter.bat就可以运行了。我这个版本本身是不支持websocket测试的,于是需要下载一个插件叫做JMeterWebSocketSampler-1.0.2-SNAPSHOT.jar,这个插件需要下载6个依赖包,如下图所示:

在插件安装好了后,就可以使用jmeter来模拟socket.io的通信了。首先打开chrome控制台,查看network。进入含有socket.io的页面时,我们可以看到如下图所示的几个链接。

我们只需要把这几个链接用jmeter实现了,就可以模拟浏览器和服务器的通信了。首先我们模拟前两个请求。点击请求我们可以看到这个请求的详细信息,从header上我们可以发现其实这两个请求还是HTTP请求,只不过带的参数不一样。第二个请求比第一个请求多带一个参数叫sid,他的值是第一个请求所相应的。这两个请求我们可以看做是TCP中的1次握手过程(我不懂TCP的三次握手,感觉这个应该和它差不多)或者说是一次认证,这个sid就是通信的唯一标识。下面我要使用jmeter模拟这两个请求。在线程组的sampler里面选择HTTP请求。如下图所示:

        第一个请求(注意,上面图片路径应该为/socket.io/?EIO=3&transport=polling   少了个问号==!)

      第二个请求注意,上面图片路径应该为/socket.io/?EIO=3&transport=polling   少了个问号==!

注意第二个请求中的${sid},这个是在第一个请求里面获取的,所有需要在第一个请求里面增加一个后置处理器-->正则表达式提取器。

现在我到chrome里面查看第3个请求的详细信息,我们可以发现,第三个请求的URL变成了ws,参数transport也变成了websocket。并且多了一个frames栏目。Frames如下图所示:

现在我们新建一个Websocket sampler来模拟socket链接。并发送2probe给服务器:

添加一个观察结果树,运行就可以看到请求的结果,相应数据为3probe

后面我们继续模拟socket.io的后续链接,也就是Frams里面的绿色部分,而白色部分就是服务器的响应。注意,最后要使用循环控制器间隔发送2给服务器保持连接。我的整个流程如下(上面下载的jmeter的example文件夹中的room-chat-test-010.jxm):

当然最后的测试结果就不说了,同时加入300个用户就挂了。话说有没有人知道怎么模拟1秒钟加入100个人?我想测试加入5000人,分为50秒加入。

时间: 2024-08-07 04:34:09

使用jmeter对websocket进行压力测试的相关文章

jmeter 连接 mysql 进行压力测试

jmeter 连接 mysql 进行压力测试,布布扣,bubuko.com

jmeter 连接 sqlite 进行压力测试

jmeter 连接 sqlite 进行压力测试,布布扣,bubuko.com

学习总结——JMeter做http接口压力测试

JMeter做http接口压力测试 测前准备 用JMeter做接口的压测非常方便,在压测之前我们需要考虑这几个方面: 场景设定 场景分单场景和混合场景.针对一个接口做压力测试就是单场景,针对一个流程做压力测试的时候就是混合场景,需要多个接口共同作用. 压测时间设定 通常时间设为10 – 15 分钟,如果涉及疲劳测试的话时间可根据实际情况设定,1周,一个月不等. 测试数据准备 如果需要测试的数据量很大的话,需要造数据,造数据可以JMeter操作数据库来完成,也可以用Python造数据. 结果查看

转:使用 JMeter 完成常用的压力测试

使用 JMeter 完成常用的压力测试 就目前 Java EE 的平台下开发的软件来说,这种节点通常可能是:Web 服务器.数据库服务器和 JMS 服务器.它们都是请求主要发生的地点,请求频率较其它的节点要高,而且处于请求序列的关键路径之上.如果它们效率无法提高的话,对于整个软件的效率有致命的影响.而且在这些节点上一般都会发生较大规模的数据交换,有时其中还包含有业务逻辑处理,它们正是在进行压力测试时首先需要考虑的. 文中有例子 http://www.ibm.com/developerworks/

【转】使用JMeter 完成常用的压力测试(二)

使用JMeter 完成常用的压力测试 Login.jsp 和welcome.jsp.其中 login.jsp 负责生成 User 对象,并调用 User 的login.当 login 返回为 true 时转向到 welcome.jsp.其验证部分的代码: <%   if( request.getParameter("Submit") != null) {  User ur= new User( request.getParameter("user"), req

Jmeter教程 简单的压力测试

转载:http://www.cnblogs.com/TankXiao/p/4059378.html?utm_source=tuicool Jmeter是一个非常好用的压力测试工具.  Jmeter用来做轻量级的压力测试,非常合适,只需要十几分钟,就能把压力测试需要的脚本写好. 什么是压力测试 顾名思义:压力测试,就是  被测试的系统,在一定的访问压力下,看程序运行是否稳定/服务器运行是否稳定(资源占用情况) 比如: 2000个用户同时到一个购物网站购物,这些用户打开页面的速度是否会变慢,或者网站

Jmeter:图形界面压力测试工具

Jmeter是一款强大的图形界面压力测试工具,完全用Java写成,关于Jmeter的介绍,网上其实有不少的文章,我原本是不想再重复写类似文章的,但我发现有些很关键性的,在我们测试中一定会用到的一些设置或操作很少见到有文章写清楚的,比如有这样的一个常见问题:如何对一个网站的多个链接进行压力测试?因为通常情况下,我们要测试的不是一个链接,假如我们测试的是某一网站的话,而这些链接我们通常都是写入到一个文本文件中,测试的过程中,会随机读取文件中的链接进行压力测试,我们所熟知的一些压力测试工具,例如Sie

用Jmeter对数据库执行压力测试

在我看来压力测试的压测对象可以分为UI,接口及数据库三个部分吧,对界面及接口进行压测还算熟悉, 定位性能瓶颈,对数据库SQL执行压测也是需要做的.工具呢?还是Jmeter 1.将需要用到的链接Oracle的架包放到jmeter中 在数据库服务器安装路径下,找到ojdbc5.jar,如 D:\app\Administrator\product\11.2.0\dbhome_1\jdbc\lib 拷贝到jmeter/lib中 2.配置Jmeter           2.1 新建线程组        

使用 JMeter 完成常用的压力测试

原文地址: http://www.ibm.com/developerworks/cn/opensource/os-pressiontest/ 胡 键 ([email protected]), 西安交通大学硕士 本文介绍了 JMeter 相关的基本概念.并以 JMeter 为例,介绍了使用它来完成最常用的三种类型服务器,即 Web 服务器.数据库服务器和消息中间件,压力测试的方法.步骤以及注意事项. 讲到测试,人们脑海中首先浮现的就是针对软件正确性的测试,即常说的功能测试.但是软件仅仅只是功能正确