2011-04-23 113 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

相關問題