【问题标题】:Apache/Server X forwarding to node.js performanceApache/Server X 转发到 node.js 性能
【发布时间】:2012-06-11 22:25:33
【问题描述】:

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

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

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

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

【问题讨论】:

    标签: apache node.js


    【解决方案1】:

    你的基本想法是对的。

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

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

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

    与往常一样,最好的解决方案是:尝试不同的事物,制定一些基准并选择最适合您的方法。

    【讨论】:

    • 感谢您的反馈,不胜感激!
    猜你喜欢
    • 2013-06-07
    • 2011-03-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-03-12
    • 1970-01-01
    • 2015-07-12
    相关资源
    最近更新 更多