NodeJS / Socket.io中为1000个用户进行压力testing?
我目前正在研究类似聊天的应用程序。 有用户,聊天室,消息 – 所有这些东西。 该应用程序由Node.js和Socket.IO提供支持。
然而,我有兴趣做的一件事是对应用程序进行压力testing。 目前存在的testing只是一些使用1个客户端的functiontesting。 但是,我想做1000人同时login应用程序,很多人进入聊天室,每个人都在那个房间里发送消息等等。
我怎么去做这个? 谷歌search似乎带来了无关的结果。
我注意到有些人认为这是重复的。 但是,这个问题涉及ASP.NET,使用Selenium是不可能的。 另外,我原本打算得到在node.js框架内做特殊操作的答案。 另一个开发者(不再是团队的一部分)写了一些压力testing,包括定义一个自定义的用户对象,迭代地注册这些用户,join一个房间等。这些testing是不完整的,不再可用,尽pipe因为代码库中的很多东西已经改变因为他们写了。 无论如何,答案以某种方式允许压力testing应用程序的另一种方式是可以接受的。
编辑:这是我的压力testing与许多用户的尝试。
function client() { // Define a testing client that responds to socket io events and the like } ... testers = []; for (int i = 0; i <= 1000; i++) testers.push(new client()); // Each client connects to server with option 'force new connection: true' it('Should login many users simultaneously') { // Use async.each on testers // Use client.login() on each client. }
我发现这是有问题的。 login大约250个用户后,testing不会进行。 这里有什么问题? 难道这与Node.js和socket.io的限制有关吗?
我和我的团队解决scheme如下:
我们在自己的文件( client.js )中定义了一个Client对象,并在事件等中定义了响应Socket.IO的各种操作和事件。 在test.js文件中,我们将实例化Client对象的许多实例,创build许多连接和客户端。
我们遇到的限制可能涉及运行testing的计算机的function(虽然承载服务器的设备可以使用1000个用户运行testing)。
您可以使用Apache JMeter工具,您可以使用单个客户端模拟N个并发用户。
跟随,例如,Apache ab。
只需创build一个API(仅用于testing目的),并使用该API的端点从apache ab发送大量消息。
ab -n 1000 -c 10 -T 'multipart/form-data; boundary=1234567890' -p post.txt http://yourdomain.com/yourproject/api/sendmessage/
而post.txt将包含像这样的东西:
--1234567890 Content-Type: application/x-www-form-urlencoded Content-Length: 30 from=myId&to=yourId&message=alrighty <base64 data> --1234567890
其中base64数据应该是一个长string,表示(base64)该POST请求的数据。
- 如何在mocha的mocha.opts文件中添加chaijs的断言?
- Angularjs全面testing
- 在IO.js 1.4.3中使用require()时Jest(JS)分段错误11
- 如何编写特殊testing用例的可testing代码
- 正确的方式来testing快速应用程序API?
- 在风帆testing中加载灯具
- node.js / karma /端到端testing:无法代理/app/index.html(错误:连接ECONNREFUSED)
- 有没有办法在node.js中启动exception或testing失败的debugging器?
- testing使用browserify别名和垫片的CommonJS模块