温馨提示×

centos nodejs怎样优化

小樊
35
2026-10-11 17:21:11
栏目: 编程语言

在 CentOS 上优化 Node.js,通常可以从 系统层面、Node.js 运行参数、代码与架构、监控与调优 四个方面来做。下面按实战角度整理一份较全面的优化指南。


一、系统层面优化(CentOS)

1. 升级系统 & 内核

yum update -y

如有条件,使用较新内核(3.10+,推荐 4.x/5.x)

2. 文件描述符限制(非常重要)

Node.js 高并发时容易遇到:

EMFILE: too many open files

修改限制:

# 查看
ulimit -n

# 临时
ulimit -n 65535

# 永久
vi /etc/security/limits.conf
* soft nofile 65535
* hard nofile 65535

3. 网络参数优化

vi /etc/sysctl.conf
net.core.somaxconn = 65535
net.ipv4.tcp_tw_reuse = 1
net.ipv4.tcp_fin_timeout = 30
net.ipv4.tcp_keepalive_time = 600
sysctl -p

二、Node.js 运行优化

1. 使用 LTS 版本 Node.js

推荐:

  • Node 18 / 20 LTS
  • 避免太老版本(如 8/10)
node -v

2. 使用 PM2(强烈推荐)

npm install -g pm2
pm2 start app.js -i max

好处:

  • 多进程(利用多核 CPU)
  • 自动重启
  • 日志管理
  • 内存监控

3. 开启多核(Cluster)

如果不使用 PM2,可手动:

const cluster = require('cluster');
const os = require('os');

if (cluster.isMaster) {
  os.cpus().forEach(() => cluster.fork());
} else {
  require('./app');
}

三、Node.js 参数与内存优化

1. 调整内存限制

默认约 1.5G(老版本更小)

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

PM2:

pm2 start app.js --node-args="--max-old-space-size=2048"

2. 使用 V8 优化参数(谨慎)

--optimize-for-size
--gc-interval=100

四、代码与架构优化(最核心)

1. 避免阻塞事件循环

❌ 错误:

const data = fs.readFileSync('big.json');

✅ 正确:

fs.readFile('big.json', () => {});

2. 使用流式处理大文件

fs.createReadStream('big.log')
  .pipe(transform)
  .pipe(res);

3. 缓存(Redis / Memory)

  • 热点数据走 Redis
  • 静态数据用内存缓存

4. 异步 & 并发控制

  • 使用 Promise.all
  • 控制并发数(p-limit)

五、Web 服务优化

1. 使用 Nginx 反向代理

location / {
  proxy_pass http://127.0.0.1:3000;
  proxy_set_header Host $host;
}

好处:

  • 静态资源
  • gzip
  • 负载均衡

2. 开启 gzip

Nginx:

gzip on;
gzip_types text/plain application/json;

六、监控与调优工具

1. 系统监控

top
htop
iostat

2. Node 性能分析

node --prof app.js
node --inspect

3. PM2 监控

pm2 monit
pm2 dashboard

七、常见性能瓶颈速查

现象 原因 解决
CPU 100% 同步代码 / 死循环 异步化
内存暴涨 内存泄漏 heapdump
QPS 低 单进程 cluster / PM2
超时 DB 慢 加索引 / 缓存

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

  • CentOS 版本
  • Node 版本
  • 应用场景(API / 爬虫 / 实时 / 文件处理)
  • 当前瓶颈(CPU / 内存 / IO)

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

0 踩