NodeJS Artillery.io工具给出令人困惑的结果

时间:2018-06-24 11:56:31

标签: node.js load-testing artillery

我正在测试我的nodeJS localhost服务器,并且我使用了artillery工具来测试服务器上的负载。因此,这里我只想测试服务器的并发级别,例如服务器可以同时处理多少个请求。请查看下面的代码和炮兵配置文件。

我的nodeJS代码-

const express = require('express');

const app = express();

app.get('/', (req, res) => {
  // I've used the 5 second delay to make the proper async case
  setTimeout(() => res.send('Welcome node!!'), 10000); 
});

const server = app.listen(process.env.PORT || 3000, () => {
 const host = server.address().address
 const port = server.address().port
 console.log("Example app listening at http://localhost", host, port)
})

火炮配置文件-

{
  "config": {
    "target": "http://localhost:3000",  
    "phases": [{
      "duration": 1,
      "arrivalRate": 10000
    }]  
  },
  "scenarios": [{
    "flow": [{
      "get" : {"url": "/"}
    }]
  }]
}

In short, Using artillery, I'm sending the 1000 requests/second.

但是在这里,我想知道,尽管每个请求都需要10秒发送响应,但炮兵如何给出成功的结果以及服务器如何能够每秒处理10000个请求(我将超时设置为10秒)

火炮记录-

enter image description here

1 个答案:

答案 0 :(得分:1)

上面分享的屏幕快照中的结果对我来说看起来很合理。您尝试在测试的1秒钟内发送10,000个请求,而客户端,服务器,网络以及其他因素(部分或全部)支持每秒526个请求(RPS),因此,大约19-测试的第二个持续时间。鉴于您的快速服务器配置中指定的超时时间以及涉及的相对微不足道的处理/有效负载,预期的响应时间都略大于10秒。您是否希望整个测试在10秒钟(约10,000 RPS)或类似的速度下完成?