14

我正在测试我使用 socket.io 和 Node.js 编写的 websockets 应用程序的可扩展性。我想对性能进行压力测试和基准测试。我可以使用哪些工具?

到目前为止,我已经研究了wsbench,但我想探索任何替代方案。

4

4 回答 4

11

花了一天时间研究基准 node.js 和 socket.io,我尝试了许多解决方案,我发现你不能使用wsbench来基准 socket.io 因为 socket.io 有自己的协议需要解决才能使连接。

在尝试了其他一些没有运气的解决方案后,我最终使用了socket.io-benchmark,并且我只使用一个有空闲空间的核心在 m1.large EC2 实例上达到了 60,000 个连接。在我的情况下,我只想测量 socket.io 连接的开销(这需要我注释掉 socket.io-benchmark 中的一些代码),所以我没有在客户端和服务器之间发送任何消息。

有趣的是,客户端比服务器占用更多的 CPU 和内存。因此,请确保您从中进行基准测试的客户端服务器功能强大,我使用了 EC2 c1.xlarge 并且有足够的空间。我将基准测试分为 6 个单独的进程,以便它可以跨多个内核扩展并避免内存限制。

小心<rampup in seconds>在客户端上将选项设置得足够高,如果你将它设置为低,一切都会缓冲并停止。

socket.io-benchmark 的唯一问题是我必须使用 node v0.4.12 才能使其全部正常工作,因为它依赖于 v8-profiler,它无法在较新版本的 node 下编译(截至撰写时)。

于 2012-02-04T15:52:20.763 回答
4

Node.js有一个非常简单的Socket.IO 客户端实现。它不是一个真正的基准测试工具,但它确实了解 Socket.IO 的协议。

使用它,编写与您的应用程序交互的客户端相当容易。

于 2011-04-24T13:13:34.110 回答
4

https://www.npmjs.org/package/thor

它是一个命令行实用程序,具有与 Apache Bench 类似的输出

雷神:版本:1.0.0

雷神,奥丁之子,WebSockets 的破坏者!

你应该:
- 产生 1 名工人。
- 创建 2 个并发/并行连接。
- 用强大的 Mjölnir 粉碎 100 个连接。

一旦我声称属于我的东西,你寻求的答案将是你的。

连接到 ws://server:8080/examples/websocket/chat

  打开 100 个连接


在线 439 毫秒
耗时 441 毫秒
已连接 100
断开连接 0
失败 55
总传输量 132.62kB
总共收到 71.85kB

持续时间(毫秒):

                     min mean stddev 中位数 max
握手 1 5 3 4 20
延迟 0 0 1 0 3

百分位数(毫秒):

                      50% 66% 75% 80% 90% 95% 98% 98% 100%
握手 4 5 5 6 7 11 17 20 20
延迟 0 0 1 1 1 1 1 2 3
于 2014-03-25T17:05:50.260 回答
0

对于可以设置多少并发连接的基准测试,我推荐wsbench。但是它不适用于 Socket.IO 站点(因为更复杂的握手)。我正在研究它,发现了一些工具,它们只是建立了与 Socket.IO 服务器的连接。仅仅衡量实际性能是不够的。您需要的是发送和接收模拟 Web 应用程序真实客户端的真实消息。我在这里描述了一些关于如何创建自己的基准测试的想法:Node.JS / Socket.IO 网站的基准测试

于 2012-04-13T08:42:53.240 回答