2011-04-23 117 views

回答

4

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

利用这一点,它很容易写一个客户端与应用程序交互。

+2

我一直在尝试这样做在过去的几天里开始和结束,这种方法存在严重的问题。对于少量的并发连接来说很好,但对于数百个连接数来说,它开始崩溃。我可能会做一些愚蠢的事情,但是当他们频繁接收消息时,连接就会无声无息地开始失败。这不会发生在低并发,只有高并发。无论什么原因,它使得实际的严重负载测试几乎不可能。这是我的应用程序的问题?你有高并发成功吗? – drewww 2011-11-23 23:04:55

+0

@Drewww只是想知道你如何结束这个,我发现你的一些代码在https://github.com/drewww/socket.io-benchmarking,并注意到它看起来你在python中实现了客户端? – 2012-02-03 13:49:51

+0

python实现也不能很好地工作。要使它以严格的规模(> 1k并发)工作,唯一的方法就是使用Java。蟒蛇企图仍然在回购,但它并没有真正有效地工作。 – drewww 2012-02-03 19:30:42

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,它不会在较新版本的节点下编译(截至写入时) 。

0

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

3

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

这一个命令行工具,具有相似的输出作为Apache的长凳

 

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 
+4

我最近使用Thor来做一些负载测试,发现Thor实际上并没有打开并发连接。他们在被打开后不久关闭。 (我使用HAProxy stats屏幕发现了这个。) – 2014-06-17 01:02:39