温馨提示×

ubuntu下nodejs运行慢咋办

小樊
38
2026-09-19 00:07:08
栏目: 编程语言

在 Ubuntu 下 Node.js 运行慢,通常不是 Node 本身的问题,而是环境、配置或代码层面导致的。下面按「最常见 → 进阶」给你一套排查和优化思路。


一、先确认是不是真的“慢”

time node app.js

或加日志:

console.time('startup');
// ...
console.timeEnd('startup');

区分是:

  • 启动慢
  • 接口/请求慢
  • CPU 占用高
  • 内存暴涨

二、最常见原因 & 解决办法

1️⃣ Node 版本太旧 / 用错版本

Ubuntu 默认源里的 Node 可能很老(如 12、14)。

✅ 建议用 Node 18 / 20 / 22(LTS)

# 使用 nvm(推荐)
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.7/install.sh | bash
nvm install --lts
nvm use --lts

2️⃣ 用了系统 apt 的 node,而不是 nvm

which node
node -v

如果是 /usr/bin/node 且版本老 → 卸载 apt 版:

sudo apt remove nodejs

3️⃣ 同步代码 / 阻塞事件循环

常见误区:

  • 大量 fs.readFileSync
  • 大 JSON JSON.parse
  • 加密、压缩在主线

✅ 改异步:

await fs.promises.readFile(...)

4️⃣ 没开多进程(CPU 密集型)

Node 是单线程,CPU 密集任务直接卡死。

✅ 用:

  • cluster
  • worker_threads
  • pm2
pm2 start app.js -i max

5️⃣ 磁盘 / IO 慢(云服务器常见)

特别是:

  • 低配云盘
  • 日志狂写
  • node_modules 巨大

✅ 检查:

iostat -x 1
df -h

✅ 建议:

  • node_modules 放 SSD
  • 减少日志写入

6️⃣ 依赖太多 / 启动加载过重

du -sh node_modules

✅ 优化:

  • 用 esbuild / tsx
  • 懒加载模块
  • 精简依赖

三、进阶优化

✅ 开启 V8 优化参数

node --max-old-space-size=2048 app.js

✅ 使用最新运行时

npx node@latest app.js

✅ 性能分析

node --prof app.js
node --prof-process isolate-*.log > result.txt

或:

npx clinic doctor -- node app.js

四、如果是 Web 服务慢

  • 是否每次都连数据库?
  • 是否没加缓存(Redis)?
  • 是否 Nginx 反代没开 gzip?

五、快速自检清单 ✅

  • [ ] Node ≥ 18
  • [ ] 使用 nvm
  • [ ] 无 sync IO
  • [ ] 多核已利用
  • [ ] 无内存泄漏
  • [ ] 磁盘 IO 正常

如果你愿意,可以告诉我:

  1. 是 Web / 脚本 / 构建 慢?
  2. Ubuntu 版本 + Node 版本
  3. CPU / 内存配置

我可以直接给你针对性优化方案。

0 踩