有没有人尝试过使用UV_THREADPOOL_SIZE环境变量?

时间:2013-07-09 17:36:36

标签: node.js

Ben Noordhius在Node v0.10.0中做出的一项更改是在Unix中“尊重UV_THREADPOOL_SIZE环境变量”。 “threadpool.c”源文件似乎就是这样做的。

如果我没有设置这个env变量,我可以验证我是否仅限于4个线程的线程池,这是线程池的默认大小。

但我在我的Linux服务器上将此环境变量设置为64,然后重新启动Node,但我似乎仍然有限,似乎是一个大小为5的线程池?!

这对任何人都有意义吗?谢谢!

3 个答案:

答案 0 :(得分:9)

您似乎必须使用node命令或从节点程序内部设置var。执行它如:

UV_THREADPOOL_SIZE=64 node

或从程序修改:

process.env.UV_THREADPOOL_SIZE=64
//then execute some function that requires threadpool
require('fs').readFile('testing',function(){});

测试线程:

ps -Lef | grep  "\<node\>" | wc -l
67

答案 1 :(得分:1)

如果您正在运行Windows操作系统并通过.js文件运行,则需要在通过节点调用脚本之前设置UV_THREADPOOL_SIZE

示例:SET UV_THREADPOOL_SIZE = 2 && node my-file-to-run.js

答案 2 :(得分:0)

确保不要将 UV_THREADPOOL_SIZE 设置为大于您拥有的核心处理器数量的数字,因为这会增加上下文切换,从而影响应用程序的性能。

const OS = require('os');
process.env.UV_THREADPOOL_SIZE = OS.cpus().length;