gpt4 book ai didi

node.js - Nodejs 每秒请求数和并发调用数

转载 作者:行者123 更新时间:2023-12-02 17:04:16 24 4
gpt4 key购买 nike

我在 Debian 7 x64 上运行 Node v0.12.7,我想在具有 4GB 内存的 16 核虚拟专用服务器上对其性能进行基准测试。

我正在运行以下简约代码:

// server.js
var http = require('http');
http.createServer(function (request, response) {
res.writeHead(200, {'Content-Type': 'text/plain'});
response.end('Hello World');
}).listen(80,"0.0.0.0");

我正在另一个终端中使用此命令启动它):

node server.js

此时 Node 正在一个核心上运行。然后我使用 ab 通过以下命令测试其性能:

ab -n 10000 -c 100 -k http://127.0.0.1/

...并得到这些结果:

...
Requests per second: 3925.81 [#/sec] (mean)
...
Percentage of the requests served within a certain time (ms)
50% 35
...

我想知道你们中是否有人做过类似的测试,并且您是否:

  • 取得了更好的成绩
  • 获得了相同类型的结果,但能够调整您的 Node 应用程序/服务器以获得更高的请求和/或更低的延迟。

我必须提到,在具有 15 个核心的集群模式下使用 pm2 运行它使我达到了 4500 个请求/秒,这让我认为在某个地方还有另一个我错过的瓶颈。

感谢您对此主题的任何想法。保罗

最佳答案

发布我的结果(希望对其他人有用):

MacBook Pro 2.2 GHz、酷睿 I7、16 GB。测试是使用JMeter完成的。 ab 在处理 15K 请求后卡住并抛出一些错误。

用户数量:200每个用户发出 5000 个请求。

结果:没有 Node 集群:

Total Samples Processed: 1000000
Throughput: 22419 req/sec
Total Time: 44 seconds

结果:使用集群 - 8 个 Node (=numCpus)

Total Samples Processed: 1000000
Throughput: 36091 req/sec
Total Time: 27 seconds

结果:使用集群 - 6 个 Node (CPU 总数的 3:1)

Total Samples Processed: 1000000
Throughput: 36685 req/sec
Total Time: 27 seconds

结果:使用集群 - 4 个 Node (=numCpus/2)

Total Samples Processed: 1000000
Throughput: 35604 req/sec
Total Time: 28 seconds

真的很棒。 4/6/8 Node 集群的性能几乎相同。

服务器代码如下。

"use strict";

var http = require('http');
const PORT = 8080;

var total = 0;

var server = http.createServer(function(request, response) {
total++;

if ((total % 1000) === 0) {
console.log("Completed:" + total);
}
response.end('It Works!! Path Hit: ' + request.url);
});

server.listen(PORT, function() {
console.log("Server listening on: http://localhost:%s", PORT);
});

以下代码用于聚类。

"use strict";

const cluster = require('cluster');
const numCPUs = require('os').cpus().length;
var http = require('http');
const PORT = 8080;

var total = 0;

//numCPUs = 6;
//numCPUs = 4

console.log("Number of CPUs" + numCPUs);

if (cluster.isMaster) {
// Fork workers.
for (var i = 0; i < numCPUs; i++) {
cluster.fork();
}

cluster.on('exit', (worker, code, signal) => {
console.log(`worker ${worker.process.pid} died`);
});
}
else {
var server = http.createServer(function(request, response) {
total++;

if ((total % 1000) === 0) {
console.log("Completed:" + total);
}
response.end('It Works!! Path Hit: ' + request.url);
});

server.listen(PORT, function() {
console.log("Server listening on: http://localhost:%s", PORT);
});
}

关于node.js - Nodejs 每秒请求数和并发调用数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33683312/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com