gpt4 book ai didi

node.js - 简单的 hello-world 应用程序在加载 800 个并发请求时速度很慢(130+ms)

转载 作者:太空宇宙 更新时间:2023-11-03 23:12:53 24 4
gpt4 key购买 nike

我在本地计算机上安装了一个简单的 NodeJS 服务器 (v8.16.2),其中包含以下 hello-world 代码片段:

const http = require('http');

const hostname = '127.0.0.1';
const port = 4000;

const server = http.createServer((req, res) => {
res.send('Hello world!');
});

server.listen(port, hostname, () => {
console.log(`Server running at http://${hostname}:${port}/`);
});

我正在通过 JMeter 使用 800 个并行请求对服务器进行负载测试,得到的平均响应时间为 130(+)ms。

为了实现更好的平均响应时间,我可能需要进行哪些调整/配置?

最佳答案

Node.js 的单个实例在单个线程中运行。为了利用多核系统,用户有时会想要启动 Node.js 进程集群来处理负载。

cluster模块允许轻松创建所有共享服务器端口的子进程。

HTTP/2通常称为 SPDY,是 IETF HTTP 工作组开发的最新 Web 协议(protocol)标准。 HTTP/2 使网页浏览更快、更轻松,并且带宽使用量更低。它注重性能,特别是解决 HTTP/1.x 以前版本中仍然出现的问题。目前,你可以看到一些流行的网站,如google、facebook和youtube,都在其网页上实现了HTTP/2协议(protocol)。在您的代码中注释它。

const cluster = require('cluster');
const http = require('http');
//const http2 = require('http2');
const numCPUs = require('os').cpus().length;

/*const options = {
key: fs.readFileSync('server.key'),
cert: fs.readFileSync('server.crt'),
requestCert: false,
rejectUnauthorized: false
};*/

if (cluster.isMaster) {
console.log(`Master ${process.pid} is running`);

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

cluster.on('exit', (worker, code, signal) => {
console.log(`worker ${worker.process.pid} died`);
});
} else {
// Workers can share any TCP connection
// In this case it is an HTTP server
// const server = http2.createSecureServer(options);
http.createServer((req, res) => {
res.writeHead(200);
res.end('hello world\n');
}).listen(4000);

console.log(`Worker ${process.pid} started`);
}

并使用最新版本的 Node js。

关于node.js - 简单的 hello-world 应用程序在加载 800 个并发请求时速度很慢(130+ms),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59248710/

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