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

use*_*260 11 node.js

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

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

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

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

use*_*109 10

您似乎必须使用node命令或从节点程序内部将其设置为var.执行它像:

UV_THREADPOOL_SIZE=64 node
Run Code Online (Sandbox Code Playgroud)

或从程序修改:

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

测试线程:

ps -Lef | grep  "\<node\>" | wc -l
67
Run Code Online (Sandbox Code Playgroud)

  • 将“export UV_THREADPOOL_SIZE=64”放入“.bashrc”或等效文件中也会将其应用到在该 shell 下启动的任何节点进程。 (2认同)

mch*_*che 5

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

cmd 中的示例:(SET UV_THREADPOOL_SIZE=2 && node my-file-to-run.js周围没有空格=

或者在 Powershell 中:$env:UV_THREADPOOL_SIZE = 2 && node my-file-to-run.js