Node.js 日志占用内存高,通常不是“日志本身”吃内存,而是日志的收集、缓冲、传输或存储方式有问题。下面按常见原因逐一说明,并给出对应优化建议。
console.log / logger.info✅ 表现:
✅ 解决:
const log = { req, res, user };
logger.error(log);
req / res / user 很大✅ 解决:
logger.error({
userId: user.id,
path: req.url
});
console.log 是同步阻塞✅ 解决:
console.logpino / winston如:
✅ 表现:
✅ 解决:
✅ 解决:
winston-daily-rotate-filelogrotateprocess.on('uncaughtException', e => {
logger.error(e);
throw e;
});
✅ 解决:
✅ 解决:
| 库 | 特点 |
|---|---|
| pino | 最快、低内存 |
| winston | 灵活 |
| bunyan | 结构化 |
✅ 推荐:pino
const pino = require('pino');
const logger = pino({
level: 'info'
});
logger.info({ userId: 1 }, 'user login');
process.memoryUsage()node --inspect + Chrome DevTools如果你愿意,可以贴:
我可以帮你精准定位是哪一类问题。