gpt4 book ai didi

node.js - Node.js + Express 的配置,用于处理大量传入请求

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

我有一个特定/奇怪的要求,我需要做这样的事情:

app.put('/example/:entity', function(req, res, next) {
fs.writeFileSync(someFile);
});

由于它是一个 sync 操作,它会阻塞事件循环,我担心 node.js/express 将开始丢弃 http 请求。

对于短期解决方案:

  • node.js/express 中的传入请求是否有队列/限制?
  • 是否有任何配置可以用来增加队列大小?
  • 如果事件循环被阻止,node.js/express 会退回请求吗?

最佳答案

当您的 Node 事件循环被阻塞时,您的服务仍将接受传入连接,但express将无法响应任何内容。传入请求将作为底层 TCP 实现的一部分进行排队。

Is there any queue/limit of incoming requests in node.js/express?

用于对传入请求进行排队的内存可能存在虚拟限制,但这是底层 TCP 堆栈的详细信息,而不是 Node.js。

Is there any configuration that I can use to increase the queue size?

我认为您可以在操作系统设置中降低 TCP 连接上限,以防止您的服务器轻易过载。我认为增加它是解决您问题的错误解决方案(见下文)。

Would node.js/express bounce requests if the event loop is blocked?

不,由于其 I/O 位于引擎盖下,node.js/express 不会反弹事件循环被阻止时收到的传入请求。在达到某些配置的 TCP 连接限制之前,您的请求不会被退回。但你真的不希望它被阻塞。

坦率地说,在 Node.js 中阻塞事件循环几乎总是一个坏主意。而且总有办法解决这个问题。在您的情况下,如果您需要串行写入该文件,请尝试将事件推送到后端队列,您可以将其配置为一次处理一个事件,而不会阻塞工作。 kue + redis是一个不错的选择。

关于node.js - Node.js + Express 的配置,用于处理大量传入请求,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30448521/

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