After reading this great answer about Node's thread nature, I started to play with UV_THREADPOOL_SIZE
system variable to change the size of thread pool, and I found something interesting:
在阅读了这个关于Node的线程性质的伟大答案之后,我开始使用UV_THREADPOOL_SIZE系统变量来更改线程池的大小,我发现了一些有趣的事情:
When I set
当我设置
process.env.UV_THREADPOOL_SIZE = 10;
I get 15 threads in my Node process (I thought it should be 10 + 1 main Node thread = 11).
我的节点进程中有15个线程(我认为应该是10 + 1主节点线程= 11)。
Have a look at my script:
看看我的剧本:
process.env.UV_THREADPOOL_SIZE = 10;
//init thread pool by calling `readFile` function
require('fs').readFile(__filename, 'utf8', function(err, content) {});
//make node not exiting
setInterval(function() {}, 1000);
After running it I type:
运行后我输入:
ps -Lef | grep test.js | grep -v grep
and get the following results:
得到以下结果:
olegssh 4869 4301 4869 0 15 16:38 pts/0 00:00:00 /home/olegssh/node/bin/node test.js
olegssh 4869 4301 4870 0 15 16:38 pts/0 00:00:00 /home/olegssh/node/bin/node test.js
olegssh 4869 4301 4871 0 15 16:38 pts/0 00:00:00 /home/olegssh/node/bin/node test.js
olegssh 4869 4301 4872 0 15 16:38 pts/0 00:00:00 /home/olegssh/node/bin/node test.js
olegssh 4869 4301 4873 0 15 16:38 pts/0 00:00:00 /home/olegssh/node/bin/node test.js
olegssh 4869 4301 4874 0 15 16:38 pts/0 00:00:00 /home/olegssh/node/bin/node test.js
olegssh 4869 4301 4875 0 15 16:38 pts/0 00:00:00 /home/olegssh/node/bin/node test.js
olegssh 4869 4301 4876 0 15 16:38 pts/0 00:00:00 /home/olegssh/node/bin/node test.js
olegssh 4869 4301 4877 0 15 16:38 pts/0 00:00:00 /home/olegssh/node/bin/node test.js
olegssh 4869 4301 4878 0 15 16:38 pts/0 00:00:00 /home/olegssh/node/bin/node test.js
olegssh 4869 4301 4879 0 15 16:38 pts/0 00:00:00 /home/olegssh/node/bin/node test.js
olegssh 4869 4301 4880 0 15 16:38 pts/0 00:00:00 /home/olegssh/node/bin/node test.js
olegssh 4869 4301 4881 0 15 16:38 pts/0 00:00:00 /home/olegssh/node/bin/node test.js
olegssh 4869 4301 4882 0 15 16:38 pts/0 00:00:00 /home/olegssh/node/bin/node test.js
olegssh 4869 4301 4883 0 15 16:38 pts/0 00:00:00 /home/olegssh/node/bin/node test.js
As you can see there are 15 threads running.
如您所见,有15个线程正在运行。
If I set UV_THREADPOOL_SIZE = 1
, I get 6 threads.
如果我设置UV_THREADPOOL_SIZE = 1,我将得到6个线程。
If I comment out the readFile
line (so the thread pool is not initialized), I get 5 threads.
如果我注释掉readFile行(因此线程池没有初始化),我将得到5个线程。
So I make a conclusion that Node at startup creates 5 threads. Why not 1?
因此我得出一个结论,Node在startup中创建了5个线程。为什么不1 ?
Can somebody shed some light on this?
有人能解释一下吗?
Edit: I'm using brand new Node 4.0.0
编辑:我正在使用全新的4.0.0节点
1 个解决方案
#1
12
4 extra threads are for use by V8. V8 uses these threads to perform various tasks, such as GC-related background tasks and optimizing compiler tasks.
V8使用了4个额外的线程。V8使用这些线程执行各种任务,例如与gc相关的后台任务和优化编译器任务。
#1
12
4 extra threads are for use by V8. V8 uses these threads to perform various tasks, such as GC-related background tasks and optimizing compiler tasks.
V8使用了4个额外的线程。V8使用这些线程执行各种任务,例如与gc相关的后台任务和优化编译器任务。