【发布时间】:2021-02-10 20:05:49
【问题描述】:
假设
- 有 200 个不同的 NodeJs ExpressJs 应用程序,它们必须同时运行。
- 考虑到这些应用中有 190 个几乎没有做任何事情,但仍然使用大量服务器资源。
- 我们使用
pm2运行这些应用程序。 - 服务器配置:Windows Server 2008、8 核 CPU、32GB RAM 和 2TB HDD。
问题
CPU 使用率将立即达到 100%,并且会降低服务器速度,即使某些应用确实处于空闲状态。
问题
- 如何优化这个问题?甚至可以在同一台服务器上运行 200 个不同的应用程序吗?
- 如何限制应用使用一定数量的资源?
【问题讨论】:
-
当您运行 nodejs 服务器实例时,即使当前没有任何任务在此实例上运行,也会分配资源。当您运行 200 个实例时,您的机器将需要分配这些资源。你可能需要重构你的实例然后变成最小的实例,将许多可能的资源加入到最小的实例中
-
200 个应用似乎很多。必须有办法让它变小。我会先尝试这样做,然后看看如何添加更多服务器。\
-
您实际上正在运行 201 个应用程序:
pm2本身就是一个应用程序。而且,201 个 nodejs 实例对于一台机器来说是一个非常大的数字。使用命令行htop实用程序检查您的机器中发生的情况,或者如果您无法获得,请使用top实用程序。你能确定一个特定的 nodejs 实例占用你的 CPU 吗?也许是pm2?即使您的 CPU 使用率很高,您的应用程序是否响应合理? Edit您的问题请告诉我们更多信息。 -
8 核 Intel 芯片实际上是 4 核。他们有所谓的超线程来帮助进程之间的上下文切换,以及健康的营销语言。
-
这些应用程序中的大多数 (190) 需要不到 5% 的 CPU 使用率,但我们仍然需要单独运行它们。
标签: node.js server cpu-usage windows-server