如何基于websocket的Node.js应用程序进行基准测试?

时间:2011-04-23 01:32:16

标签: node.js benchmarking websocket socket.io

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

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

4 个答案:

答案 0 :(得分:10)

花了一天时间研究基准测试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的唯一问题是我必须使用节点v0.4.12才能使它全部工作,因为它依赖于v8-profiler,它不能在较新版本的节点下编译(截至编写)。

答案 1 :(得分:4)

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

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

答案 2 :(得分:3)

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

它是一个命令行实用程序,具有与Apache Bench

类似的输出

Thor:                                                  version: 1.0.0

God of Thunder, son of Odin and smasher of WebSockets!

Thou shall:
- Spawn 1 workers.
- Create 2 concurrent/parallel connections.
- Smash 100 connections with the mighty Mjölnir.

The answers you seek shall be yours, once I claim what is mine.

Connecting to ws://server:8080/examples/websocket/chat

  Opened 100 connections


Online               439 milliseconds
Time taken           441 milliseconds
Connected            100
Disconnected         0
Failed               55
Total transferred    132.62kB
Total received       71.85kB

Durations (ms):

                     min     mean     stddev  median max
Handshaking          1       5             3       4 20
Latency              0       0             1       0 3

Percentile (ms):

                      50%     66%     75%     80%     90%     95%     98%     98%    100%
Handshaking          4       5       5       6       7       11      17      20      20
Latency              0       0       1       1       1       1       1       2       3

答案 3 :(得分:0)

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