做外贸 建网站要注意什么,ssr网站怎么做,wordpress显示页面加载时间,国内免费代理服务器问题#xff1a; 我最近遇到了一个问题#xff0c;该问题需要针对多个用户测试SockJs / Stomp Spring Websocket代理的性能。 由于WebSocket本质上是异步的#xff0c;因此它比常规的http / https请求-响应测试更加棘手。 解#xff1a; 好了#xff0c;无需解释为什么Jm… 问题 我最近遇到了一个问题该问题需要针对多个用户测试SockJs / Stomp Spring Websocket代理的性能。 由于WebSocket本质上是异步的因此它比常规的http / https请求-响应测试更加棘手。 解 好了无需解释为什么Jmeter是执行这种测试的很好的工具但是需要一个插件使用stomp协议与Jmeter建立与服务器的websocket连接。 在这里我发现此插件非常有用因为它确实处理了与服务器层建立Stomp协议连接的样板代码。 但是这个插件有一个局限性一旦它创建了连接并订阅了一个websocket主题它便进入睡眠状态一旦它出来它将在睡眠时间内打印所有接收到的消息并结束其执行。 这通常不适用于交互式应用程序在这些应用程序中我们的Websocket会根据其他用户的各种活动/当前用户执行的活动不断接收通知而不会停止其他屏幕功能。 因此我们需要对上述插件进行更改以便websocket继续监听消息而我们的应用程序继续执行其他各种活动。 实现方法非常简单 a更改SockJsSampler.java文件以最后删除websocket的休眠和关闭。 它基本上是181和182行。 b编写一个扩展AbstractJavaSamplerClient.java的新Java类。 该类负责侦听进入您的网络套接字的消息。 c现在我们有2个Sampleres一个用于websocket一个用于从websocket监听它们可以通过队列连接。在我的情况下我使用ArrayBlockingQueue 。 d修改SockJsSampler以将消息放入此ArrayBlockingQueue中 。 这可以在handleframe方法中的插件的SockJsWebsocketSubscriptionHandler类中完成。 因此想法是在线程组执行开始时创建一次Websocket连接并继续用传入消息填充队列并且在测试计划的各个点上使用在b点中创建的新示例作为Jmeter Java Request Sampler来读取消息从队列中验证数据。 关于在websocket上接收消息所花费的时间我们可以开始捕获自定义采样器启动时的时间并减去接收到其预期消息时的时间。 使用SampleResult API的result.sampleStart和result.sampleEnd可以更轻松地完成此操作当您从AbstractJavaSamplerClient扩展此类时该方法将在runTest方法中继承。 注意 如果要运行多于1个线程的线程组来模拟多个用户则可能必须为每个线程设置1个ArrayBlockingQueue 以便不同线程的侦听器无法读取消息。 这很重要因为我们需要记住我们只有1个websocket连接所有线程都共享。 如果您打算让所有线程都拥有自己的websocket连接那么您不必担心这一点。 翻译自: https://www.javacodegeeks.com/2019/08/websockets-jmeter-getting-performance-numbers.html