Kubernetes NodeJS 消耗超过 1 个 CPU?

dan*_*man 9 node.js kubernetes

我们在 Pod 中运行单个 NodeJS 实例,请求 1 个 CPU,并且没有限制。经过负载测试,我们观察到以下情况:

NAME                                                CPU(cores)   MEMORY(bytes)
backend-deployment-5d6d4c978-5qvsh                  3346m        103Mi
backend-deployment-5d6d4c978-94d2z                  3206m        99Mi
Run Code Online (Sandbox Code Playgroud)

如果NodeJS只运行一个线程,它怎么会消耗超过1000m的CPU,当直接在Node上运行时它只使用一个核心?kubernetes 是否以某种方式让它跨核心借用时间?

pvi*_*ela 4

尽管 Node.js 在单线程中运行主应用程序代码,但 Node.js 运行时是多线程的。Node.js 有一个内部工作池,用于运行后台任务,包括 I/O 和某些 CPU 密集型处理(如加密函数)。此外,如果您使用worker_threads工具(不要与工作池混淆),那么您将直接访问Node.js 中的其他线程。