我正在测试使用socket.io和Node.js编写的websockets应用程序的可伸缩性。我想对性能进行压力测试和基准测试。我可以使用哪些工具?
到目前为止,我已经研究了wsbench,但我想探索任何替代方案。
发布于 2011-04-24 21:13:34
Node.js有一个非常简单的Socket.IO client implementation。它不是一个实际的基准测试工具,但它确实知道Socket.IO的协议。
使用它,编写一个与您的应用程序交互的客户端是相当容易的。
发布于 2012-02-04 23:52:21
我花了一天的时间研究node.js和socket.io的基准测试,我尝试了许多解决方案,我发现不能使用wsbench对socket.io进行基准测试,因为socket.io有自己的协议,需要解决这些协议才能建立连接。
在尝试了其他一些解决方案但没有成功之后,我最终使用了socket.io-benchmark,并且我在一个m1大型EC2实例上使用了60,000个连接,只使用了一个有空闲空间的内核。在我的例子中,我只想测量socket.io连接的开销(这需要我注释掉Socket.IO-benchmark中的一些代码),所以我没有在客户端和服务器之间发送任何消息。
有趣的是,客户端比服务器占用更多的CPU和内存。因此,请确保您正在进行基准测试的客户端服务器是健壮的,我使用的是EC2 c1.xlarge,并且有足够的头部空间。我将基准测试分成6个单独的进程,这样它就可以跨多个内核进行扩展,并避免内存限制。
如果您将客户端上的<rampup in seconds>选项设置为low everything buffers和grinds to halt,请小心将其设置得足够高。
to benchmark的唯一问题是我不得不使用node v0.4.12来让它工作,这是因为对v8-profiler的依赖,它不能在较新版本的node下编译(在撰写本文时)。
发布于 2012-04-13 16:42:53
对于可以设置多少个并发连接的基准测试,我建议使用wsbench。然而,它不适用于Socket.IO站点(因为更复杂的握手)。我正在研究它,发现了几个工具,它们只是建立到Socket.IO服务器的连接。这还不足以衡量真正的性能。您需要的是发送和接收模拟web应用程序的真实客户端的真实消息。我在这里描述了一些关于如何创建您自己的基准测试的想法:Benchmarking for Node.JS / Socket.IO sites
https://stackoverflow.com/questions/5761523
复制相似问题