【问题标题】:Node Express does not handle parallel requestsNode Express 不处理并行请求
【发布时间】:2020-12-20 05:24:08
【问题描述】:

我刚刚创建了一个 NodeJS Express 服务器来了解 NodeJS 的工作原理。我了解到 NodeJS 可以同时处理大量的 API 请求,因为 CPU 密集型任务不是由同一个线程完成的。

但是,我的服务器甚至无法同时处理 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 秒内解决两个请求

我需要在机器设置中配置什么吗?或任何地方?

【问题讨论】:

  • 您确定是节点未处理并行请求,还是您的测试代码在发送第二个请求之前等待响应?
  • @prasanth 我没有尝试过使用 pm2 集群模式。我试图了解 NodeJS 的工作原理
  • @ZeeshanShamsuddeen pm2 也是 node 包之一。nodejs 生产部署的主要参考工具是 pm2。它默认具有集群模式。 node js single threaded one。所以它不处理并行请求
  • @slebetman 目前我尝试使用 Google Chrome 浏览器,让我尝试使用 Postman

标签: javascript node.js express asynchronous server


【解决方案1】:

问题是因为我使用浏览器刺激了对服务器的模拟点击。如果对同一个 API 完成后续请求,Google chrome 会暂停后续请求,这就是我认为我的服务器出现问题的原因。

【讨论】:

    猜你喜欢
    • 2016-06-18
    • 2017-11-13
    • 2016-06-16
    • 1970-01-01
    • 1970-01-01
    • 2014-11-25
    • 2014-12-29
    • 2021-08-12
    • 2018-09-25
    相关资源
    最近更新 更多