gpt4 book ai didi

Apache/Server X 转发到 node.js 性能

转载 作者:搜寻专家 更新时间:2023-11-01 00:09:07 25 4
gpt4 key购买 nike

我开始使用 node.js 构建一个轻量级、高需求的 REST 平台,以构建一些内部应用程序。一个问题与我的开发环境以及 Apache 和 node.js 共存有关。让它们共存没有问题,因为有很多关于如何通过让 Apache 将请求重定向到 Node 来“共享”端口 80 的帖子:

http://arguments.callee.info/2010/04/20/running-apache-and-node-js-together/ http://www.readwriteweb.com/hack/2010/12/how-to-run-apache-and-nodejs.php

和代理到 Apache 的 Node :

https://github.com/nodejitsu/node-http-proxy

然而,似乎有一个问题与代理时的性能“命中”有关,特别是在使用 Apache 代理 Node 时。虽然我的生产环境将是一个监听端口 80 的纯 node.js 解决方案,但理论上不会让 Apache 介入并处理初始 I/O 几乎会破坏使用 node.js 的大部分性能优势,从我/O 视角?如果此框收到数千个请求、长轮询等,Apache 重定向是否会产生许多线程,然后传递给单线程 node.js?

正如我所说,我是 node 的新手,所以我只是想着手解决这个问题。

最佳答案

您的基本想法是正确的。

首先让 Apache 处理请求使其成为链的一部分,如果它是链中最薄弱的环节,它可能会减慢您的应用程序。

在标准配置中,如果并发请求数低,Apache 并不慢,但处理的请求越多,Apache 使用的 RAM 就越多。如果您正在使用一些持久连接,您很容易在那里遇到一些限制。

Apache 有不同的 MPM(多处理模块)。默认情况下,它使用 mpm_prefork,这是众所周知的内存消耗(每个连接一个线程)。
您可以切换到 mpm_worker,它使用与 node.js 类似的模型来处理连接,更适合您尝试归档的任务类型。 (事件连接处理,但它与其他模块 [如 mod_php] 有一些怪癖,不再是线程安全的。)

一如既往,最好的解决方案是:尝试不同的事情,制定一些基准并采用最适合您的方法。

关于Apache/Server X 转发到 node.js 性能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10988336/

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