我想对我的 websocket 服务器进行容量测试,但真的不知道从哪里开始?
我能够编写一个 AI 来发送消息来测试使用情况,但是我将如何模拟/建立 100、500、1000 个连接等......?
前,当我不得不使用 socket.io 库对服务器加载测试数千个连接时,我遇到了类似的问题。我无法找到任何现成的解决方案来做到这一点,所以最终我最终使用 Node 和一些 for 循环构建了自己的测试.js
Node的优点是你几乎可以将客户端javascript复制并粘贴到你的服务器代码中,所以模拟客户端非常简单,然后你只需要建立多个连接来生成负载。这是一种运行所需的 javascript 以建立套接字连接的快速简便方法(假设这是您连接到套接字的方式)。
我遇到的问题是运行 600 多个侦听器,往往会使我的节点盒上的 CPU 最大化,但一点点 AWS 魔法解决了这个问题。
另一个问题是报告结果。套接字连接的响应时间实际上没有任何概念,至少不是经典意义上的响应时间,因此很难知道何时出现问题 - 至少从客户端的角度来看。但是通过监控服务器,我们能够看到连接何时失败以及资源何时开始变得稀缺,这足以让我们对它可以支持的连接数量进行基准测试。
> Autobahn Testsuite旨在满足这一需求,但该工具的性能部分仍然显示"正在开发中"。
您可以使用JMeter来实现此目的,并从此处获取WebSocket采样器插件: http://github.com/maciejzaleski/JMeter
对于这么多连接 1000,您可能需要获取多个代理计算机才能完成任务。这不一定是专用服务器,因为您可以在少数工作站(开发人员/测试人员计算机)上部署代理并将其用于测试目的。您可以通过将测试执行安排为在数小时外运行来限制影响。
Jmeter插件在并发用户数量方面存在严重限制。它只在~450个用户之前运行良好。然后我尝试使用炮兵库(https://artillery.io/docs/testing_websockets.html),但该库也对其 Web 套接字包的循环有限制。