我正在寻找容量测试我的 websocket 服务器,但真的不知道从哪里开始?
我可以编写一个 AI 来发送消息以测试使用情况,但是我将如何模拟/建立 100、500、1000 个连接等......?
我正在寻找容量测试我的 websocket 服务器,但真的不知道从哪里开始?
我可以编写一个 AI 来发送消息以测试使用情况,但是我将如何模拟/建立 100、500、1000 个连接等......?
不久前,当我不得不使用 socket.io 库对服务器进行数千个连接的负载测试时,我遇到了类似的问题。我找不到任何现成的解决方案来做到这一点,所以最后我最终使用 Node.js 和一些 for 循环构建了自己的测试。
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),但是这个库也有他们的网络套接字包的循环限制。