我在网上查了一下,似乎找到的都是与“Node 如何从在多核 cpu 中运行中受益?”这个问题相关的答案。
但。如果您的计算机只有一个核心,则在任何给定时间只能运行一个进程。 (我正在考虑这里的任务调度)。并且node使用单线程模型。
我的问题:是否有任何场景可以在一个核心中运行多个节点进程?如果该进程是一个侦听端口的 Web 服务器,那么鉴于只有一个进程可以侦听,这如何工作?
我的问题:是否有任何情况下运行是有意义的
一个核心中的多个节点进程?
是的,有一些场景。请参阅下面的详细信息。
如果该进程是一个侦听端口的 Web 服务器,那么如何才能
鉴于只有一个进程可以监听,这是否有效?
Node.js 集群模块创建了一种场景,其中所需端口上有一个侦听器,但传入请求在所有集群进程之间共享。更多详情敬请关注...
您可以使用集群模块运行多个进程,这些进程都配置为处理同一端口上的传入请求。如果你想知道传入的请求如何在不同的集群进程之间共享,你可以阅读中的解释这篇博文 http://onlinevillage.blogspot.com/2011/11/how-nodejs-multiprocess-load-balancing.html。简而言之,最终所需端口上只有一个侦听器,并且传入请求在各个集群进程之间共享。
至于您是否可以从比核心数量更多的进程中受益,答案是,这取决于您正在寻找什么类型的好处。如果您有一个具有所有异步 I/O 的正确编写的服务器,那么添加比内核更多的进程可能不会提高您的整体吞吐量(按服务器每秒可以处理的请求来衡量)。
但是,如果您的请求中有任何 CPU 密集型处理,那么拥有更多进程可能会在同时请求之间提供更公平的调度,因为操作系统将在每个进程之间“共享”CPU。这可能会稍微降低整体吞吐量(因为任务在进程之间切换 CPU 会增加开销),但即使有多个请求一起处理,也可能会增加请求处理量。
如果您的请求没有太多 CPU 密集型处理,并且大多数时间实际上只是等待 I/O,那么添加比内核更多的进程可能没有任何好处。
因此,这实际上取决于您想要优化的内容以及您的情况。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)