Node.js在CentOS上的性能调优策略
sudo yum update -y确保系统组件最新;通过NodeSource仓库安装最新LTS版本(如curl -sL https://rpm.nodesource.com/setup_16.x | sudo bash - + sudo yum install -y nodejs),新版本通常包含性能改进与bug修复。/etc/sysctl.conf优化网络与内存管理,关键参数包括:fs.file-max = 65536(增加文件描述符限制)、net.ipv4.tcp_tw_reuse = 1(复用TIME-WAIT连接)、net.core.somaxconn = 4096(扩大连接队列)、net.ipv4.tcp_max_orphans = 32768(增加孤儿进程上限);执行sudo sysctl -p使配置生效。NODE_OPTIONS环境变量调整老生代内存上限,避免内存溢出(OOM),例如export NODE_OPTIONS="--max_old_space_size=4096"(设置为4GB,可根据服务器内存调整)。sudo npm install pm2 -g全局安装PM2,启动应用时使用pm2 start app.js --name my-app,支持进程守护、自动重启、负载均衡(多实例)及监控(pm2 monit)。const cluster = require('cluster');
const numCPUs = require('os').cpus().length;
if (cluster.isMaster) {
for (let i = 0; i < numCPUs; i++) cluster.fork();
} else {
require('./app.js'); // 启动应用
}
async/await或Promise替代回调函数,避免阻塞事件循环(如数据库查询、文件读写等I/O操作)。Stream模块处理大文件(如上传/下载),减少内存占用,例如:const fs = require('fs');
const readStream = fs.createReadStream('large-file.txt');
const writeStream = fs.createWriteStream('output.txt');
readStream.pipe(writeStream); // 流式传输
mysql2的pool配置)复用数据库连接,减少频繁建连的开销。node-cache(内存缓存)或Redis缓存频繁访问的数据(如接口结果、静态资源),降低重复计算或数据库查询次数。server {
listen 80;
server_name example.com;
location /static/ {
alias /var/www/static/; # 静态资源目录
expires 30d; # 缓存30天
}
location / {
proxy_pass http://localhost:3000; # 转发到Node.js
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
}
}
listen 443 ssl http2;),提升传输效率。--inspect参数启动调试模式(node --inspect app.js),通过Chrome DevTools查看CPU、内存占用及调用栈,定位性能瓶颈。