2016-08-17 94 views
0

我正在尝试使用node.js并面临吞吐量的一个奇怪问题。基本上,我有这样的代码来创建一个简单的HTTP服务器(上4GB内存和4个vCPU虚拟机,运行Ubuntu 16.04和Node.js的v6.3.1):增加node.js http服务器的吞吐量

const http = require('http'); 
http.createServer((req, res) => { 
    res.writeHead(200, { 'Content-Type': 'text/plain' }); 
    res.end('Hello'); 
}).listen(8888); 

我与node server.js运行它启动HTTP服务器,然后我试图使用Apache台不同机器上进行负载测试:

ab -l -r -n 100 -c 50 -k http://server-ip:8888/

然而,无论什么请求数&并发(N/C值)我测试一下,基准测试结果总是显示'每秒请求数'低于5 /秒,这太低了w代表像node.js这样的可伸缩框架和一个简单的HTTP服务器。

所以我假设这是与配置,设置等有关。任何人有任何想法如何增加吞吐量在这种情况下?!

更新:我遇到谁也越来越高通量与云虚拟机上运行近乎相同的基础代码的人:

http://zgadzaj.com/benchmarking-nodejs-basic-performance-tests-against-apache-php

https://www.jayway.com/2015/04/13/600k-concurrent-websocket-connections-on-aws-using-node-js/

http://blog.yld.io/2016/02/08/squeeze-the-juice-out-of-node/

http://blog.caustik.com/2012/08/19/node-js-w1m-concurrent-connections/

+1

使用群集来利用更多的核心。 – Amit

+0

不幸。 “集群”(4名工人)的结果相同。 – Nick

+0

然后尝试专用服务器。 – Amit

回答

1

问题是Windows 8.1(我首先尝试加载测试机器)限制了tcp连接,从而影响了Apache Bench(ab)并发性。在不同的Ubuntu机器上,它工作正常,吞吐量结果要好得多。

0

总是试图确认错误不是由外部变量引起的,总是从最远到最近。并且请注意,不能在与测试服务器相同的机器上运行基准测试,因为如果不使用软件,您的基准测试工具资源将与经过测试的服务器相同,至少在硬件上是肯定的。即使是虚拟化。

与NodeJS祝你好运!