我刚刚创建了一个NodeJS Express服务器来了解NodeJS的工作原理。我了解到,鉴于CPU密集型任务不是由同一线程完成的,NodeJS可以同时处理大量API请求。
但是,我的服务器甚至无法同时处理2个请求,这也没有任何CPU密集型任务。我很确定我在这里错过了一些东西。这是我的代码:
const http = require('http');
const express = require('express');
const app = express();
const waitForSomeTime = () => new Promise((resolve) => {
setTimeout(() => resolve(), 5000);
});
app.use(async (req, res) => {
console.log('Request received');
await waitForSomeTime();
console.log('Response sending')
return res.send('DONE');
})
app.set('port', 3000);
const server = http.createServer(app);
server.listen(3000, () => { });
当前,当我并行访问2个请求的API时,服务器会在5秒钟后解析第一个请求,然后接受第二个请求。总时间为10秒。我在本地Mac系统和具有4个内核的Linux VM中尝试了该应用程序。
理想情况下,NodeJS不应在启动第一个请求的计时器后立即接受第二个请求。从而在5秒内解决了两个请求
是否需要在机器设置中进行配置?还是任何地方?
答案 0 :(得分:0)
问题是因为我使用浏览器来刺激服务器的模拟命中。如果对相同的API进行处理,Google chrome会暂停后续请求,这就是我认为服务器出现问题的原因。