Tomcat JMeter websocket插件maciejzaleski/JMeter WebSocketSampler的问题-java.io.IOException

Tomcat JMeter websocket插件maciejzaleski/JMeter WebSocketSampler的问题-java.io.IOException,tomcat,websocket,jmeter,Tomcat,Websocket,Jmeter,我想使用JMeter和插件maciejzaleski/JMeter-WebSocketSampler来进行一些websocket测试 在服务器端,我运行了一个带有JavaWebSocket端点的tomcat。所以我使用的是Tomcat8.0中的websocket库 在我的测试中,我使用jmeter采样器向服务器发送一条带有数字的请求消息。如果触发了OnMessage事件,我将使用该数字从mongodb中读取大量数据集。读取数据集后,我想将它们发送回jmeter。它的工作原理类似于回声服务器 @

我想使用JMeter和插件maciejzaleski/JMeter-WebSocketSampler来进行一些websocket测试

在服务器端,我运行了一个带有JavaWebSocket端点的tomcat。所以我使用的是Tomcat8.0中的websocket库

在我的测试中,我使用jmeter采样器向服务器发送一条带有数字的请求消息。如果触发了OnMessage事件,我将使用该数字从mongodb中读取大量数据集。读取数据集后,我想将它们发送回jmeter。它的工作原理类似于回声服务器

 @OnMessage
public void echo(int message, Session session) throws IOException{

    System.out.println("Client message: " + message);

    int limit=0;
    limit = message;



    //connect to mongoDB

    //MongoClient client = new MongoClient("localhost",27017);
    mongo = new MongoAccess(client);

    //start time reading data
    long timeOne = System.currentTimeMillis();
    System.out.println("Time One:" + timeOne + "ms");

    //read data from mongoDB
    String data= mongo.readNumberOfDocuments(limit).toString();

    //end time reading data
    long timeTwo = System.currentTimeMillis();
    System.out.println("Time Two:" + timeTwo + "ms");
    System.out.println("Read Time Mongo: " + (timeTwo-timeOne) + "ms");



    //send data to client
    session.getBasicRemote().sendText("DB Time:" + (timeTwo-timeOne)+"ms "+data);


    //close connection to mongoDB
    client.close(); 

    //Logging read times from mongo db
    logReadTime(timeOne,timeTwo,"OnMessage");




}

如果我发送100对100数据集的数字,并使用循环一次,它工作正常。但是,如果我想要更多的数据集,比如1000或在循环中使用100,这是行不通的。我的雄猫抛出这样的异常

服务器只能发送113个数据集,而不是1000个,因为数据集到达后连接关闭

我的目标是通过websocket连接发送不同数量的数据集,并更改循环的数量。例如,我想向jmeter发送100次请求并接收1000个数据集。此外,我想模拟不同数量的用户。所以我想分析不同的响应时间

我认为问题出在jmeter方面,因为在我的浏览器中有一个简单的websocket客户端,我没有问题


知道我做错了什么吗?如何使用Jmeter测试类似的东西?

websocket插件有一些问题,尽管维护人员有时会合并建议的修复,但该插件有一些改进的分支(我自己创建了一个)。所以我会检查这些,看看是否有一个可以解决您的特定问题。我想我记得一些“高容量”问题是由一些福克斯公司解决的。请看这里:


希望能有所帮助。

截至2017年9月,最新、维护最完善、功能最强大的websocket插件是:

可以通过jmeter插件插件管理器轻松安装:

根据您打开的插件,插件中还不支持类型为0的框架,但开发人员正在进行开发。 另见:


我用这个插件尝试了相同的测试,但我遇到了相同的问题。JMeter引发异常:java.lang.RuntimeException:不支持的帧类型:0。所以我认为插件不支持大响应!?响应数据仅包括113个数据集,而不是1000个。。。我找不到问题,是我做的:我下载了分支延续帧。在构建并将其添加到$JMETER_HOME/lib/ext(而不是插件的实际版本)之后,它就可以工作了。所以我毫无例外地得到了完整的响应数据。现在,我测试不同的scnearios。我希望它能起作用。我看了一下,但找不到关于这个问题的信息。也许插件不支持大响应!?我想我是说这个:但你似乎已经找到了一个适合你的:-)