在 CentOS 上优化 Node.js 运行环境,通常可以从系统层面、Node.js 本身、进程管理、网络与内核、监控与部署几个维度来做。下面给你一套比较实用的优化清单(适用于 CentOS 7 / 8 / Stream)。
nvm 或官方二进制,避免 yum 自带的老版本nvm install --lts
nvm use --lts
Node.js 高并发时容易遇到 EMFILE
ulimit -n 65535
永久生效:
# /etc/security/limits.conf
* soft nofile 65535
* hard nofile 65535
编辑 /etc/sysctl.conf:
# 最大连接数
net.core.somaxconn = 65535
net.ipv4.tcp_max_syn_backlog = 65535
# 端口复用
net.ipv4.tcp_tw_reuse = 1
# 文件句柄
fs.file-max = 2097152
# 内存相关
vm.swappiness = 10
应用:
sysctl -p
Node.js 是单线程,应充分利用多核 CPU
pm2 start app.js -i max
或内置 cluster:
const cluster = require('cluster');
npm install pm2 -g
pm2 startup
pm2 save
PM2 优势:
node --max-old-space-size=2048 app.js
PM2 中:
pm2 start app.js --node-args="--max-old-space-size=2048"
heapdump 分析worker_processes auto;
events {
worker_connections 10240;
}
启用:
Node.js:
server.keepAliveTimeout = 60000;
firewalld).env 管理配置pm2 monitnode --profclinic.jsprometheus + grafana| 问题 | 优化方式 |
|---|---|
| CPU 高 | cluster / 算法优化 |
| 内存高 | GC / 泄漏排查 |
| 连接数低 | fd / 内核参数 |
| 响应慢 | Nginx / 缓存 |
如果你能告诉我:
我可以给你更针对性的优化方案。