乐趣区

关于node.js:windows下设置processenvUVTHREADPOOLSIZE无效

node 在执行 IO 操作 (读取文件) 时会开启线程池(默认是 4 个), 咱们能够通过设置 UV_THREADPOOL_SIZE 减少线程池个数。

背景:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    
</body>
</html>
const fs = require("fs");

process.env.UV_THREADPOOL_SIZE=64;

setInterval(() => {fs.readFile(`${__dirname}/index.html`,()=>{console.log("read success");
    })
}, 3000);
{
  "name": "threadpool",
  "version": "1.0.0",
  "description": "","main":"index.js","scripts": {"test":"echo \"Error: no test specified\" && exit 1","start":"node index.js"},"keywords": [],"author":"",
  "license": "ISC"
}

在 windows 下运行 node, 发现 process.env.UV_THREADPOOL_SIZE 设置有效。

线程数量应该从 12 减少到 76 个, 理论为 16 个, 阐明 UV_THREADPOOL_SIZE 设置有效

起因:
Linux 零碎下能够在 js 代码里间接设置, 而 windows 零碎下须要在执行 node 命令前设置线程池数量, 将 node 启动改为如下图(注:= 号左右不要有空格)

运行后果:

退出移动版