【发布时间】:2015-10-29 03:57:24
【问题描述】:
我目前正在开发一个类似聊天的应用程序。有用户、聊天室、消息——所有这些东西。该应用由 Node.js 和 Socket.IO 提供支持。
不过,我有兴趣做的一件事是对应用程序进行压力测试。当前存在的测试只是一些使用 1 个客户端的功能测试。但是,我想做一些事情,比如测试 1000 人同时登录应用程序,很多人进入聊天室,每个人都在那个房间里发送消息等等......
我该怎么做呢? Google 搜索似乎显示了不相关的结果。
我注意到有些人认为这是重复的。但是,这个问题涉及到 ASP.NET,使用 Selenium 是不可能的。此外,我最初打算获得涉及在 node.js 框架内执行特殊操作的答案。另一位开发人员(不再是团队的一部分)编写了一些压力测试,包括定义自定义用户对象并迭代地注册这些用户、加入房间等。这些测试是不完整的,并且不再可用,因为代码库中的很多内容都发生了变化因为他们被写了。无论如何,以某种方式允许以其他方式对应用程序进行压力测试的答案是可以接受的。
编辑:这是我对许多用户进行压力测试的尝试。
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.
}
我发现这是有问题的。登录大约 250 个用户后,测试根本没有进展。这里有什么问题?会不会跟node.js和socket.io的限制有关?
【问题讨论】:
-
虽然上面的帖子是重复的,但它会比请求的内容(ASP.NET)提供更多的负载测试通用信息。
-
@MeanStackeD:您可以使用 Apache JMeter 工具,您可以使用单个客户端模拟 N 个并发用户。
-
嗯。一个外部工具会很有趣。但是,我认为我可以做一些事情,比如使用异步库一次连接多个客户端,响应这些客户端的“on”操作等。
标签: node.js socket.io stress-testing