优化 Node.js(你这里说的“Node节点”通常指 Node.js 进程/服务节点,也可能指集群中的 Node 节点)的性能,可以从运行环境、代码、架构、系统资源多个层面入手。下面按实用优先级给你一个系统性的优化清单。
node -v
Node 默认是单线程,应利用多核 CPU:
✅ 使用:
cluster 模块pm2worker_threads(CPU 密集型任务)const cluster = require('cluster');
if (cluster.isMaster) {
for (let i = 0; i < require('os').cpus().length; i++) {
cluster.fork();
}
}
pm2 start app.js -i max
❌ 常见阻塞点:
✅ 优化方式:
async / await// 不推荐
for (let i = 0; i < 100000; i++) {
const obj = { x: i };
}
// 推荐
const obj = {};
for (let i = 0; i < 100000; i++) {
obj.x = i;
}
✅ 使用 stream 而非一次性读取
fs.createReadStream('big.log')
.pipe(transformStream)
.pipe(fs.createWriteStream('out.log'));
Map / LRUconst cache = new Map();
if (cache.has(key)) return cache.get(key);
// 错误示例
for (const id of ids) {
await db.get(id);
}
// 正确
await db.getMany(ids);
const compression = require('compression');
app.use(compression());
node --inspectclinic.js0xpm2 monitclinic doctor -- node app.js
常见原因:
node --inspect app.js
NODE_OPTIONS=--max-old-space-sizeulimit -n 65535
如果是 Kubernetes Node,优化重点不同:
如果你能告诉我:
我可以给你更针对性的优化方案或代码示例。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。