CentOS 上 Node.js 性能优化实操指南
一 基础与运行时优化
pm2 start app.js -i max --name api --max-memory-restart 1Gnode --max-old-space-size=4096 app.js(单位 MB)npm ci 保证一致性;本地/原生模块确保已为目标平台正确编译。二 系统层面与网络优化
net.core.somaxconn = 4096(增大全连接队列)net.ipv4.tcp_syncookies = 1(抵御 SYN Flood)net.ipv4.tcp_tw_reuse = 1、net.ipv4.tcp_fin_timeout = 30(加速 TIME_WAIT 回收)fs.file-max 与进程 ulimit -n 提升到65536+,避免“Too many open files”。noop/none 对于 SSD 更友好)。keepalive 与超时,减少握手与连接开销。三 内存与高并发治理
process.memoryUsage() 与 Prometheus client 暴露指标;--max-old-space-size 与容器内存上限一致,留出安全余量;四 快速检查清单与示例配置
快速检查清单
--max-old-space-size,并配置了 Nginx + HTTP/2;示例 Nginx 配置片段(HTTP/2 + 静态资源缓存 + 反向代理)
upstream backend {
least_conn;
server 127.0.0.1:3000;
server 127.0.0.1:3001;
}
server {
listen 443 ssl http2;
ssl_certificate /etc/nginx/ssl/server.crt;
ssl_certificate_key /etc/nginx/ssl/server.key;
location / {
proxy_pass http://backend;
proxy_http_version 1.1;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
location ~* \.(js|css|png|jpg|jpeg|gif|ico|svg)$ {
expires 1y;
add_header Cache-Control "public, immutable";
access_log off;
}
}
提示:上述参数需结合业务与压测结果微调,变更前在测试环境验证,变更中灰度发布并持续观测指标。