系统级基础优化
sudo apt update && sudo apt upgrade -y,确保Debian系统和内核组件为最新版本,修复已知性能漏洞。ulimit -n 65535临时设置,编辑/etc/security/limits.conf添加* soft nofile 65535 * hard nofile 65535永久生效。/etc/sysctl.conf,添加net.core.somaxconn = 65535(最大连接队列长度)、net.ipv4.tcp_max_syn_backlog = 65535(SYN队列长度)、net.ipv4.ip_local_port_range = 1024 65535(可用端口范围),执行sudo sysctl -p使配置生效。Node.js进程与代码优化
cluster模块创建与CPU核心数匹配的工作进程,主进程管理子进程生命周期,避免单线程瓶颈。示例如下:const cluster = require('cluster');
const http = require('http');
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 {
http.createServer((req, res) => res.end('Hello World')).listen(8000);
}
fs.promises.readFile()、async/await替代同步方法(如fs.readFileSync()),避免阻塞事件循环;控制异步并发量(如用p-limit库限制同时发起的请求数)。--max-old-space-size参数调整堆内存上限(如node --max-old-space-size=4096 app.js设置4GB),避免内存溢出;使用process.memoryUsage()监控内存占用,借助heapdump生成快照、Chrome DevTools分析内存泄漏(如未释放的全局变量、事件监听器)。Set代替数组做唯一值存储、Map代替对象做键值对),减少深层嵌套函数调用(拆分复杂逻辑为小函数降低栈帧开销),缓存频繁计算结果(如用node-cache库缓存数据库查询结果),避免重复计算。第三方工具辅助优化
PM2(npm install pm2 -g)管理Node.js进程,支持自动重启、内存监控、日志管理(pm2 monit查看实时资源占用,pm2 logs查看日志);用Prometheus+Grafana搭建监控体系,收集CPU、内存、请求延迟等指标并可视化;用New Relic、Datadog进行APM(应用性能管理),快速定位性能瓶颈(如慢查询、高延迟接口)。Redis(sudo apt install redis-server)作为内存数据库,通过node-redis客户端实现缓存(如client.set('key', 'value', 'EX', 3600)设置1小时过期)。Nginx作为反向代理,处理静态文件(如图片、CSS),并将动态请求分发到多个Node.js实例(通过pm2 scale app 4启动4个实例)。配置示例如下(/etc/nginx/sites-available/default):server {
listen 80;
server_name yourdomain.com;
location / {
proxy_pass http://localhost:3000; # 转发到Node.js实例
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection 'upgrade';
proxy_set_header Host $host;
}
location /static/ {
alias /var/www/static/; # 静态文件目录
}
}
```。