首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Node.js:如何在同一台服务器上运行多个不同的应用程序并优化CPU的使用?

Node.js:如何在同一台服务器上运行多个不同的应用程序并优化CPU的使用?
EN

Stack Overflow用户
提问于 2020-10-28 12:46:04
回答 1查看 447关注 0票数 3

假设

有200个不同的NodeJs应用程序,它们必须运行concurrently.

  • Consider 190,这些应用程序几乎没有做什么,但仍然使用服务器的大量资源。
  1. -我们使用pm2运行这些应用程序。
  2. Server配置: Windows 2008,8核CPU,32 to内存和2TB硬盘。

问题

立即,CPU使用率将达到100%,甚至当一些应用程序处于空闲状态时也会减慢服务器的速度。

问题

  1. 如何优化这个问题?在同一台服务器上可以运行200个不同的应用程序吗?
  2. 如何限制应用程序使用一定数量的资源?
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-10-28 23:39:53

一台机器上的200个nodejs实例太多了。每个实例都需要相当多的RAM和CPU。

它们可能需要比机器的物理内存更多的虚拟内存。您的操作系统试图应付这种过载,通过敲击,交换进程RAM的硬盘驱动器。敲打使机器减速到爬行。

运行nodejs,可以减少每个nodejs进程使用的内存量

代码语言:javascript
复制
--max-old-space-size=256 

为每个进程分配256 for。(我相信,违约是1.5GiB)。但您可以很容易地看到,这将很快耗尽您的机器的32G内存。而且,nodejs强制执行这一限制的方式是更频繁地进行垃圾收集。垃圾收集是一个CPU密集型进程.

pm2也有可能正在消耗大量的CPU周期,试图管理200个实例。

该怎么办呢?

  • 花钱购买更多内存和内核的服务器。

  • 使用较小的机器,并将每台机器专用于几个实例。如果您的程序真的间歇运行,AWS微VM实例(cpu限制的)应该可以正常工作。

  • 重新工作了这200个节点程序,因此其中许多程序可以在同一个nodejs实例中一起运行。这是处理大量低负载Javascript程序的好方法。Javascript的回调和事件驱动模型使得在一个实例中运行许多不相关的内容成为可能(只要这些内容避免全局内存。

)

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64573165

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档