sudo yum update -y更新系统内核及软件包,避免已知漏洞影响性能;使用NodeSource官方仓库安装最新稳定版Node.js(如curl -sL https://rpm.nodesource.com/setup_18.x | sudo bash - && sudo yum install -y nodejs),新版本通常包含性能改进与bug修复。async/await或Promise替代同步操作(如fs.readFileSync),避免阻塞事件循环。例如,用fs.promises.readFile()替代fs.readFileSync处理文件读取,确保事件循环持续处理其他请求。let/const声明局部变量;socket.on('end')或组件销毁时,调用removeListener移除不再需要的监听器;process.memoryUsage()监控内存使用,或用heapdump生成堆快照(npm install heapdump && node --inspect app.js),结合Chrome DevTools分析内存泄漏点(如未释放的大对象、循环引用)。stream模块(如fs.createReadStream+pipe),避免一次性加载全部数据到内存。例如:const fs = require('fs');
const readStream = fs.createReadStream('large-file.txt');
const writeStream = fs.createWriteStream('output.txt');
readStream.pipe(writeStream); // 分块传输,降低内存占用
Map替代普通对象提升查找效率,用Set去重),避免不必要的循环嵌套(如将O(n²)算法优化为O(n))。NGINX作为反向代理,承担静态文件缓存(如location ~* \.(jpg|css|js)$ { expires 30d; })、SSL/TLS解密(如ssl_certificate /path/to/cert.pem;)和负载均衡(如upstream node_servers { server 127.0.0.1:3000; server 127.0.0.1:3001; }),将请求分发到多个Node.js实例,提升并发处理能力。cluster模块创建多个工作进程(数量=CPU核心数),共享同一端口。示例代码:const cluster = require('cluster');
const os = require('os');
if (cluster.isMaster) {
for (let i = 0; i < os.cpus().length; i++) cluster.fork(); // 创建子进程
cluster.on('exit', (worker) => console.log(`Worker ${worker.process.pid} died`));
} else {
require('./app.js'); // 子进程运行应用
}
--max-old-space-size增加老生代内存(默认1.5GB,如node --max-old-space-size=4096 app.js可设为4GB),避免因内存不足导致进程崩溃;UV_THREADPOOL_SIZE调整异步I/O线程池大小(默认4,如UV_THREADPOOL_SIZE=8 node app.js),提升文件操作、数据库查询等异步任务的并发能力。user_id、created_at)创建索引,加速查询(如MySQL执行ALTER TABLE users ADD INDEX idx_user_id (user_id););mysql2/promise或pg-pool等库管理数据库连接,避免频繁创建/销毁连接(如const pool = mysql2.createPool({ host: 'localhost', user: 'root', database: 'test', waitForConnections: true, connectionLimit: 10, queueLimit: 0 });)。node-cache库缓存频繁访问的数据(如配置项、热点数据),设置TTL(过期时间)自动清理(如const NodeCache = require('node-cache'); const cache = new NodeCache({ stdTTL: 600, checkperiod: 120 }););Redis缓存数据库查询结果(如client.get('user:1', (err, reply) => { ... })),减少数据库压力。--inspect启动调试:node --inspect app.js,通过Chrome浏览器访问chrome://inspect,使用Performance面板记录性能 timeline,分析事件循环耗时、函数调用栈等;--prof生成性能日志:node --prof app.js,生成isolate-*.log文件,再用node --prof-process isolate-*.log > processed.txt解析,找出耗时最长的函数。pm2 start app.js --max-memory-restart 4096M监控内存使用,超过阈值自动重启进程;通过pm2 monit查看CPU、内存实时状态,或pm2 logs查看日志。以上策略覆盖了从系统底层到应用代码的全链路优化,可根据实际业务场景(如高并发API、实时聊天、大数据处理)选择组合使用,逐步提升CentOS系统中Node.js应用的性能与稳定性。