当前位置: 首页 > 知识库问答 >
问题:

节点是否使用100%的CPU?

傅俊德
2023-03-14

我对运行的节点进程所看到的情况感到有点困惑。主机上的Docker stats显示容器使用了超过100%的CPU。这让我认为节点进程正在耗尽CPU。当我在主机上运行top并看到节点进程使用了超过100%的CPU时,就确认了这一点。

当我跳入docker容器时,我看到该节点只使用了54%的CPU,并且处理在两个内核之间进行。我希望看到一个核心被最大化,另一个为0,因为Node是单线程的。

我发现了这个QA,看起来操作系统可能在内核之间移动进程(对我来说是新闻)。这个单Node.js应用程序使用多个核心吗?

Node.JS: 15.1.0
EC2 Instance: c5.large
NestJS: 7.3.1

共有1个答案

黄俊智
2023-03-14

您所看到的(很可能)是由于top的不同风格造成的。

我想大胆猜测一下,你的Docker形象可能是基于阿尔卑斯?Alpine中的top命令是busybox。它报告每个进程的CPU使用率占可用CPU总数的百分比(NCPU*100%)。

这与大多数其他类型的top不同,后者将每个进程的CPU使用率报告为单个CPU的百分比。

# This will max out 1 cpu of the system
docker run --name stress --rm -d alpine sh -c 'apk add stress-ng && stress-ng --cpu 1'

# This shows the busybox top with usage as ratio of total CPUs
# press 'c' in top to see the per-CPU info at the top
docker exec -it stress top

# This will install and run procps top, with usage as a ratio of single CPU
docker exec -it stress sh -c 'apk add procps && /usr/bin/top'

环境变量uv_threadpool_size限制可以同时运行的Libuv控制的线程的最大数量。在运行node之前将其设置为更大的数字(默认值为4)可能会消除瓶颈。

如果您正在执行一些CPU密集型操作,请考虑使用cluster、辅助线程、编写自己的附加组件或生成单独的进程来执行计算。

 类似资料:
  • 问题内容: 当Meteor应用达到峰值流量时,我遇到了麻烦(请注意,这没什么,每天访问1000次,一天的综合浏览量可能为2500次)。CPU使用率会激增并且永远不会恢复,因此我开始使用Nodetime来监视使用率,并且我一直在重新加载进程()以使一切恢复正常。 我对概要分析还很陌生,因此找到根本原因使我不知所措。我相当确定它与我的应用程序的服务器代码有关,但性能分析似乎将Fibers模块指向“热点

  • 当我们进行BST时,我明白一个主要的关键点是左孩子必须小于右孩子。当我们创建一个BST并有一个根节点时,当您在该根节点的左侧遍历并到达其右子节点时,右子节点是否也大于根节点? 如果我们在根节点的右侧遍历,也是如此。如果我们在根节点的右侧遍历,我们会遇到这样一种情况吗,即我们击中了一个小于根节点值的左子节点?

  • 我有以下课程: 我正在尝试实现一种方法: 这将检查是否是的祖先(任何深度,直到根)。 我需要一个密码查询。

  • 本文向大家介绍DOM节点的根节点是不是body?相关面试题,主要包含被问及DOM节点的根节点是不是body?时的应答技巧和注意事项,需要的朋友参考一下 文档对象模型 (DOM) 是HTML和XML文档的编程接口。它提供了对文档的结构化的表述,并定义了一种方式可以使从程序中对该结构进行访问,从而改变文档的结构,样式和内容。DOM 将文档解析为一个由节点和对象(包含属性和方法的对象)组成的结构集合。简

  • 我正忙于在窗格上绘制节点的练习。我的第一个目标是处理100万个节点,然后将其提升到1500万个。 我有一个自定义的对象图,我可以在此对象中添加边和节点。每个节点对象都有一个椭圆,我可以调用和绘制,并且与边缘对象相同。目前,我有一个为节点生成随机位置的函数。 我现在使用一个滚动窗格来实现窗格的平移和查看所有节点。 我觉得用哈希图是个好主意 我使用以下代码将节点添加到哈希图: 然后,当我平移时,我得到

  • 对于cassandra driver 4.0.0(com.datastax.oss/java driver core/4.0.0),PreparedStatement(仅在现有的情况下)使用100%的CPU节点,即使应用程序处于空闲状态: cassandra driver 3.7.1(com.datasax.cassandra/cassandra driver core/3.7.1)的相同Prep