英文:
Does workerpool declared in multiple routes can still maintain its cpu usage without caring about threshold
问题
我希望能够使用workerpool来处理CPU密集型任务的Node.js系统,但在多个路由中有一些关于CPU使用情况让我感到困惑。一个场景如下:
route1.js:
const workerpool = require('workerpool');
const pool = workerpool.pool(__dirname + '/job1.js');
pool.exec.......
route2.js:
const workerpool = require('workerpool');
const pool = workerpool.pool(__dirname + '/job2.js');
pool.exec.......
route3.js:
const workerpool = require('workerpool');
const pool = workerpool.pool(__dirname + '/job3.js');
pool.exec.......
当Node.js使用这三个文件时,它们将创建自己的workerpool,由于worker线程的数量和控制由Node.js内部管理,这是否可能会导致阈值问题?以及如何正确使用workerpool,非常感谢。
英文:
I hope to figure out a node.js system with workerpool to handle cpu intensive tasks, but
there is something confused me about the cpu usage in multiple routes.
A scenario is like this:
route1.js:
const workerpool = require('workerpool');
const pool = workerpool.pool(__dirname + '/job1.js');
pool.exec.......
route2.js:
const workerpool = require('workerpool');
const pool = workerpool.pool(__dirname + '/job2.js');
pool.exec.......
route3.js:
const workerpool = require('workerpool');
const pool = workerpool.pool(__dirname + '/job3.js');
pool.exec.......
When the node.js use these three files, they will create their own workerpool, and
since worker_thread number and its control is via node.js internals, is this possible to
create threshold problem? And how to use workerpool in a correct way, thanks a lot.
答案1
得分: 1
我会只使用一个工作池。工作者可以公开多个函数,因此您的工作者可以毫无问题地公开job1、job2和job3。如果您为每个函数创建一个池,您需要考虑这些池可能会相互影响...
考虑一下,如果您的池子占用了100%的CPU,这意味着如果所有3个池都满了,您最多可以需要300%。
如果您将它们分配为每个池子33%,这意味着您最多可以需要100%,这是不错的,但如果只有job1在某个时间点需要大量资源,它将只能使用可用资源的33%。
通过使用单一池,您可以达到最多100%,而无需超过100%的可用资源。
英文:
What I'd do is only have one pool of worker. Workers can expose multiple functions so your worker could expose job1, job2 and job3 without problem. If you create a pool for each, you'll need to consider that pools may work against each other...
Consider your pools getting 100% of your CPUs, that means you can require up to 300% what you have available if all 3 pools are full.
If you allocated them 33% each, that means you can require up to 100% which is good, but if only job1 is heavily required at one time it will only be able to use 33% of available resources.
By using a single pool, you can reach up to 100% without requiring more than 100% available.
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论