javascript - Node.js 进程在 AWS Fargate 中的行为如何?

标签 javascript node.js cpu autoscaling aws-fargate

我在 1 vCPU/2GB 内存任务配置上的 AWS Fargate 上部署了一个 Node 应用程序。我一直想知道 Node.js 在此设置上运行时与可用的 vCPU 相关的行为是什么。
根据 AWS 文档,vCPU 只是英特尔至强 CPU 内核上的一个超线程:What vCPUs in Fargate really mean? .那么,如果整个程序只在一个本身已经是超线程的 vCPU 上运行,那么 libuv 如何运行线程池(默认情况下运行 4 个线程)?此外,Node 程序在运行在具有 0.256 vCPU 的较低配置上的配置上表现如何?
此外,Fargate 通过运行配置中指定的任务数量自动处理扩展;但是,如果我决定使用 PM2 之类的东西在每个任务中运行多个 Node 进程会发生什么?由于我在 1 个 vCPU 上运行,这真的不起作用吗?

最佳答案

与线程一直运行相同:在单个 CPU 上。
线程(软件)是在多核机器流行之前发明的。所有最初的多线程 Unix 机器,如 Sun、HP9000、Digital VAX 和 Alphas 以及 Silicon Graphics IRIS 都是单 CPU 机器,只有一个内核,没有超线程。
当时线程(软件)的工作方式与今天相同:线程轮流在 CPU 上执行。这是由操作系统使用 CPU 的硬件特性来安排的:定时器中断。
操作系统将设置一个定时器来触发中断,然后将 CPU 传递给线程。当计时器到期时,它将中断 CPU,导致 CPU 停止执行线程中的代码,而是执行操作系统中的代码。正是在此中断期间,操作系统决定下一个执行哪个线程并再次设置定时器中断。多核 CPU 的唯一区别是操作系统有更多的 CPU 内核来调度线程。与超线程的唯一区别是操作系统可以为每个 CPU 内核调度两个线程。
这就是为什么您通常在典型的家庭用户桌面 Linux 机器(甚至不是服务器)上运行大约 300 个线程的原因,即使它在物理上只有 4 个内核能够同时只运行 8 个线程。

关于javascript - Node.js 进程在 AWS Fargate 中的行为如何?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63107690/

相关文章:

javascript - 为什么 JavaScript 中的数学方法比按位运算符更快?

java - 为什么我的线程程序只使用一个 CPU?

Javascript - 使用 if 语句评估表单中的结果

node.js - 如何创建一个 self 更新的 Node.js 应用程序?

javascript - 如何将 HashMap 数组插入 Redis? ( Node .js)

使用 100% 单 CPU 内核的 Java Web 应用程序

javascript - fatal error : Uncaught Error: Call to undefined function loginRelocate() Javascript

javascript - Angular JS 中的嵌套列表

javascript - 如何比较两个数组然后返回差值的索引?

javascript - 将页面的多个元素存储到 JSON 对象