gpt4 book ai didi

java - 多核 CPU 上的单线程 Node.js 与 Java (Tomcat)

转载 作者:行者123 更新时间:2023-11-28 22:40:39 25 4
gpt4 key购买 nike

由于 Node.js 是单线程的,如果我在 Node.js 上运行一个不涉及任何 IO 的应用程序,即使它在 8 核 CPU 机器上运行,它是否总是只使用一个 CPU 内核?

假设我有一个返回 Node 上运行的两个数字之和的服务,同时有 1000 个请求命中该服务(假设该服务在主线程上计算总和并且不使用回调,因为这是一项简单的任务)。那么即使有 7 个核心闲置,Node 一次也只能处理一个请求?在 Java 世界中,如果我在应用服务器 Tomcat 中将 HTTP 线程池大小设置为 8,则同样的 1000 个请求的执行速度将比 Node 快 8 倍。

那么我是否必须在一台 8 核机器上运行 8 个 Node.js 实例,并在它前面安装一个负载均衡器,以便使用所有 8 个内核?

最佳答案

Since Node.js is single threaded, if I run an app that doesn't have any IO involved on Node.js, will it always use just one CPU core even if it is running on a 8 core CPU machine?

假设你不 fork 任何子进程,Node 将一次最多使用一个核心,是的,不管有多少个核心可用。不过,拥有多个内核会有所帮助,因为这会减少 Node 与其他进程之间的争用。

So Node would handle only one request at a time even when there are 7 cores sitting idle?

基本上是的,但在实践中,您不太可能让所有其他核心都处于空闲状态。

In Java world, if I set the HTTP thread pool size to 8 in an app server Tomcat, the same 1000 requests would be executed 8 times faster than node.

仅当 Java webapp 处理请求的时间与 Node 处理的时间相同时,才会出现这种情况。它是否会这样做取决于很多因素,因此或多或少无法预测。它只能被测量。可以想象,衡量 webapp 的 Java 实现的性能 vs。同一 webapp 的 Node 实现会发现在测试条件下那个特定的 Java 实现那个特定的 Node 实现慢得多。或者不是。

So do I have to run 8 instances of Node.js on an 8 core machine and front it with a load balancer so all 8 cores get used?

我敢肯定在细节上可能会有变化,但基本上是的。

关于java - 多核 CPU 上的单线程 Node.js 与 Java (Tomcat),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40242620/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com