代码层面优化
fs.promises.readFile()替代fs.readFileSync()、用async/await处理数据库查询(如MongoDB的find()或MySQL的query()),避免同步操作阻塞事件循环。控制异步并发量(如用p-limit库限制并发请求数),防止资源耗尽。let/const声明局部变量),及时移除不再需要的事件监听器(如emitter.removeListener()),选择高效数据结构(如用Set代替数组进行快速查找,用Map代替普通对象存储键值对)。用process.memoryUsage()监控内存占用,结合Heapdump生成内存快照分析泄漏根源。fs.createReadStream()/fs.createWriteStream())逐块读取/写入大文件,避免一次性加载整个文件到内存。对于数据库操作,添加索引(如MySQL的ALTER TABLE users ADD INDEX idx_name (name))、使用批量操作(如MongoDB的insertMany())、连接池(如pg-pool for PostgreSQL)减少连接开销。系统配置优化
ulimit -n 65535;永久:编辑/etc/security/limits.conf添加* soft nofile 65535和* hard nofile 65535);优化TCP参数(编辑/etc/sysctl.conf,设置net.core.somaxconn = 65535、net.ipv4.tcp_max_syn_backlog = 65535、net.ipv4.tcp_tw_reuse = 1、net.ipv4.tcp_fin_timeout = 30,然后执行sudo sysctl -p使配置生效)。nvm install --lts)管理Node.js版本,新版本通常包含V8引擎性能改进、内存管理优化及bug修复。进程与并发管理
cluster模块创建与CPU核心数相等的工作进程(示例代码:const cluster = require('cluster'); const numCPUs = require('os').cpus().length; if (cluster.isMaster) { for (let i = 0; i < numCPUs; i++) cluster.fork(); } else { // 启动HTTP服务器 }),或用PM2的集群模式(pm2 start app.js -i max)自动管理进程。npm install pm2 -g),通过pm2 start app.js启动应用,pm2 monit监控CPU/内存使用,pm2 logs查看实时日志,pm2 scale app +2动态扩容进程,确保应用高可用。网络与反向代理优化
sudo apt install nginx),编辑配置文件(/etc/nginx/sites-available/default),添加反向代理规则(location / { proxy_pass http://localhost:3000; proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection 'upgrade'; proxy_set_header Host $host; }),重启Nginx(sudo systemctl restart nginx)。Nginx可处理静态文件(如图片、CSS)、负载均衡(多台Node.js服务器)及SSL卸载,减轻Node.js负担。http2.createSecureServer()创建HTTP/2服务器(需配置SSL证书),支持多路复用、头部压缩等特性,减少网络延迟。缓存策略优化
node-cache库(const NodeCache = require('node-cache'); const myCache = new NodeCache({ stdTTL: 600 });)缓存频繁访问的数据(如配置项、计算结果),设置合理的过期时间(TTL)。sudo apt install redis-server),通过redis库(const redis = require('redis'); const client = redis.createClient();)缓存数据库查询结果(如client.get('user:1', (err, data) => { if (data) return res.send(JSON.parse(data)); // 否则查询数据库并缓存 })。性能监控与分析
--inspect启动调试(node --inspect app.js),通过Chrome DevTools分析CPU占用、内存泄漏;用console.time()/console.timeEnd()测量代码块执行时间(如console.time('dbQuery'); await User.find(); console.timeEnd('dbQuery');)。pm2 monit监控进程状态(CPU、内存、重启次数),pm2 plus提供可视化仪表盘;集成New Relic或AppDynamics,跟踪请求链路、数据库查询性能,及时发现慢查询或异常。