2015-10-18 155 views
1

我开发了一个基本的nodejs + express服务器,对于一个路由返回状态200并在本地主机上执行几个负载测试。问题是,我无法通过1000个请求/秒对于这个简单的路线:NodeJS负载/压力测试结果

app.get('/test',function(req.res){ 
    res.status(200).send() 
} 

对于1000请求/秒服务器表现还好,但在此之后的负载测试将返回错误。如何增加nodejs的这个值,这是一个好的结果吗?这只是一个没有任何处理的简单路由,所以我认为服务器应该接受更多的请求。谢谢。

+1

请显示您的整个设置。如果你只是使用快递,你应该能够提供超过你想要的服务。但它完全取决于你的硬件。我希望你不是想在rasperry pi上达到这么多的请求:) 使用'ab -n 10000 -c 5 http:// localhost:8088/test'我可以每秒获得大约5000个请求。 –

+1

我的设置就是这样的路线和app.listen(3000) – alexsc

回答

1

有太多因素会影响你的结果。这通常是你不应该在自己的开发机器上做的事情,如果你想获得可靠的实际结果。你不应该使用你自己的开发机器的原因是它总是运行与你的应用程序完全无关的其他东西,它们使用你的系统资源 - 例如Google Chrome,I/O等。
另一个因素是你的硬件以及饱和了你的系统资源。

如果您仍想在本地进行测试,我希望您记住结果不会反映生产环境,因此测试无用。
通过使用Node的cluster模块,您还可以提高性能,使您的服务器利用您所有机器的处理器线程。 Node.js是一种单线程语言。

+1

你好,我已经使用集群,实际上,功率增加了一点。我了解你对测试机器的关注,但是,这个结果是否接近现实呢?我的感觉非常低。 – alexsc

+1

在本地机器上测试时,您将不会得到反映生产环境的结果。这不可靠。我建议你在服务器机器上运行这个测试,而不是获得更可靠的结果。 '1000 req/sec'很**,即使它对节点应用程序来说不是很多,但它仍然是很多请求。 – Svenskunganka

+1

我不明白你为什么强调生产环境。我只是用节点进行一些测试。生产环境也将在路线上进行处理,而不仅仅是简单的返回,因此请求的数量将显着减少。 – alexsc