我正在尝试使用node.js并面临吞吐量的奇怪问题。基本上,我有这个代码来创建一个简单的HTTP服务器(在具有4GB RAM和4个vCPU的VM上运行Ubuntu 16.04和node.js v6.3.1):
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 Bench从另一台机器上加载测试:
ab -l -r -n 100 -c 50 -k http://server-ip:8888/
然而,无论数字和数量是多少?请求的并发性(n / c值)我测试时,基准测试结果总是显示“每秒请求数”低于5 /秒,这对于像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/
答案 0 :(得分:1)
问题是Windows 8.1(我首次尝试的加载测试机)限制了tcp连接,从而影响了Apache Bench(ab)并发性。在不同的Ubuntu机器上,它工作正常,吞吐量结果更好。
答案 1 :(得分:0)
始终尝试确认错误不是由外部变量引起的,始终从最远到最近。请注意,您不能在与测试服务器相同的计算机上运行基准测试,因为如果不是软件,您的基准测试工具资源将与测试的服务器相加,至少在硬件中是肯定的。即使是虚拟化。
祝NodeJS好运!