【问题标题】:The "right way" to host multiple NodeJS domains on a single server?在单个服务器上托管多个 NodeJS 域的“正确方法”?
【发布时间】:2016-01-29 09:09:45
【问题描述】:

我有一个运行 Apache 并为多个 WordPress 站点提供服务的 VPS。我还设法使用 MEAN 堆栈在同一个 VPS 帐户上运行了一个 NodeJS 服务器。这个设置一切正常。

我决定将第二个 NodeJS/MEAN 应用程序添加到同一台服务器上,在一个单独的端口上运行,并且一切都运行良好 - 除了我注意到一旦我获得第三个对所有站点的页面加载性能产生重大影响服务器正在运行。

我在 SO 上找到了 this questionthis question,但这些都没有解决性能问题。所以我的问题是:

是否有可能/实际在同一个 NodeJS 服务器应用程序上运行两个单独/唯一的域? 或者这会产生比它解决的问题更多的问题? (注:我不是指同一台机器,我是指同一个NodeJS实例)

如果不是,我怎样才能提高性能?升级我的 VPS 是唯一的选择吗?

【问题讨论】:

  • 您可能想更新您的问题。一开始,您说您正在运行两个节点应用程序,在不同的端口上,然后您说它在同一个 nodejs 进程上。这些是相互矛盾的陈述。
  • 我没有说我在同一个进程上运行它们,我是在问我是否可以在同一个进程/端口上运行它们以节省开销。我目前在 2 个端口上,但我想在一个端口上处理两个不同的域 - 这可能/实用吗? (这是我的根本问题)
  • 啊,我明白了。在下面回答。

标签: javascript node.js apache nginx mean


【解决方案1】:

因此,您确实可以在同一个端口/进程上运行多个应用程序。如果您需要按域分隔,可以使用express-vhost 模块完成此操作。您还可以使用cluster 模块来运行共享资源的进程池(尽管它们最终是同一个“应用程序”,但您可以将其与虚拟主机方法相结合,让进程池为多个域提供服务。

也就是说,我认为你实际上不会得到你想要的结果。与大多数(例如 JVM)相比,nodejs 进程的开销非常小;成本主要来自您的自定义代码正在做什么。我认为更有可能发生的情况是,无论您为 VPS 选择的服务器大小都不足以运行您投入的所有内容,或者您​​编写的节点应用程序在长时间运行的进程中占用了事件循环。也可能是 Apache 是猪。你需要做更多的诊断才能找到它的根源。

【讨论】:

  • 作为旁注,我现在正在使用虚拟主机方法,但它特定于我的用例。在大多数应用程序中,我只是运行不同的 Node 实例。
  • 感谢 Paul,这很有帮助,并为我提供了一个开始探索的起点……也很高兴了解您对实用性的想法(即可能不会产生预期的结果)。非常感谢!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2017-02-16
  • 2013-02-01
  • 2010-10-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多