CentOS环境下Node.js性能优化策略
sudo yum update -y更新CentOS系统至最新稳定版;通过NodeSource仓库安装最新稳定版Node.js(如curl -sL https://rpm.nodesource.com/setup_18.x | sudo bash - && sudo yum install -y nodejs),新版本通常包含性能改进与bug修复。异步编程规范
async/await替代回调函数,避免“回调地狱”并提升代码可读性;.then()改为并行Promise.all()),减少不必要的等待;内存管理优化
var变量),及时移除不再需要的事件监听器(如emitter.removeListener()),避免循环引用(如对象相互引用时使用WeakMap);stream模块处理大文件或网络数据(如fs.createReadStream().pipe()),避免一次性加载全部数据到内存;选择合适的数据结构(如用Set替代数组存储唯一值,减少内存占用);process.memoryUsage()监控内存使用,使用heapdump生成堆快照(node --inspect app.js后通过Chrome DevTools分析),定位内存泄漏点;调整V8内存限制(如--max-old-space-size=4096设置老生代内存为4GB,避免内存溢出)。CPU密集型任务处理
使用worker_threads模块创建工作线程,将CPU密集型任务(如图像处理、加密计算)移出主事件循环,避免阻塞主线程。例如:
const { Worker } = require('worker_threads');
function runWorker(data) {
return new Promise((resolve) => {
const worker = new Worker('./cpu-task.js', { workerData: data });
worker.on('message', resolve);
});
}
// 主线程调用
runWorker(largeData).then(result => console.log(result));
数据库与缓存优化
mysql.createPool()、pg-pool)复用数据库连接,减少频繁创建/销毁连接的开销;WHERE、JOIN条件)创建索引,提升查询速度;node-cache(内存缓存)或Redis(分布式缓存)缓存频繁访问的数据(如商品详情、用户会话),减少数据库查询次数。反向代理与负载均衡
使用Nginx作为反向代理,实现以下功能:
集群模式(Cluster)
利用CentOS服务器的多核CPU,通过cluster模块创建子进程(数量等于CPU核心数),共享同一个端口。例如:
const cluster = require('cluster');
const numCPUs = require('os').cpus().length;
if (cluster.isMaster) {
for (let i = 0; i < numCPUs; i++) cluster.fork(); // 创建子进程
cluster.on('exit', (worker) => cluster.fork()); // 子进程崩溃时重启
} else {
require('./app'); // 子进程运行应用
}
实测显示,4核服务器启用集群后,请求处理能力可提升380%。
内置工具使用
--inspect启动应用(node --inspect app.js),通过Chrome DevTools进行内存快照分析、CPU profile分析,定位性能瓶颈;perf_hooks模块监控事件循环延迟(如monitorEventLoopDelay()),识别事件循环阻塞问题。第三方工具推荐
pm2 monit)、日志管理(pm2 logs),提升应用稳定性;