系统级配置优化
ulimit -n 65535临时增加限制;永久生效需编辑/etc/security/limits.conf,添加* soft nofile 65535和* hard nofile 65535。/etc/sysctl.conf,添加net.core.somaxconn = 65535(提升TCP连接队列长度)、net.ipv4.tcp_max_syn_backlog = 65535(增加SYN队列容量)、fs.file-max = 100000(系统级最大文件描述符数),执行sysctl -p使配置生效。noatime,nodiratime选项(减少文件访问时间更新的开销)。Node.js应用代码优化
async/await、Promise替代同步API(如fs.readFile→fs.promises.readFile),避免阻塞事件循环;对于CPU密集型任务,拆分为小任务或使用setImmediate/process.nextTick分散负载。Buffer和Stream处理大文件(如视频、日志),避免一次性加载到内存;及时释放无用对象(如移除事件监听器、清空缓存),防止内存泄漏。Map替代Object进行高频查找)、优化循环逻辑(如减少嵌套循环、提前终止不必要的迭代),降低CPU占用。进程与并发管理
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'); // 启动应用
}
worker_threads模块创建子线程,避免阻塞主线程的事件循环。V8引擎调优
--max-old-space-size参数增大(如node --max-old-space-size=4096 app.js设置为4GB),避免因内存不足导致的崩溃。进程管理与监控
pm2 start app.js -i max启动集群模式(自动匹配CPU核心数),支持负载均衡、自动重启(进程崩溃后5秒内重启)、日志管理(pm2 logs)和性能监控(pm2 monit)。htop(查看CPU/内存使用率)、vmstat(监控系统级资源)、iostat(查看磁盘I/O)等工具;或使用node --inspect启动调试模式,结合Chrome DevTools分析CPU、内存热点。网络与数据库优化
mysql2的pool模块,减少连接建立/销毁的开销)、优化查询语句(避免SELECT *、使用分页LIMIT)。缓存策略
TTL=3600秒),避免缓存雪崩。expires 30d,让浏览器缓存静态资源(如JS、CSS),减少重复请求。工具与持续优化
clinic.js(生成性能报告,包括CPU、内存、事件循环分析)、node --inspect(结合Chrome DevTools查看火焰图)定位性能瓶颈。winston或pino等异步日志库,避免同步日志写入阻塞事件循环;通过logrotate工具分割日志文件(如按天分割),防止日志过大占用磁盘空间。