worker_processes auto; # 自动设置为CPU核心数
worker_rlimit_nofile 100000; # 每个worker能打开的文件描述符数量
events {
worker_connections 4096; # 每个worker的最大连接数
use epoll; # Linux下高性能事件模型
multi_accept on; # 同时接受多个连接
}
http {
sendfile on; # 启用高效文件传输
tcp_nopush on; # 优化数据包发送
tcp_nodelay on; # 禁用Nagle算法
keepalive_timeout 30; # 保持连接超时
keepalive_requests 1000; # 单个连接最大请求数
client_max_body_size 10m; # 最大上传文件大小
client_body_buffer_size 128k; # 请求体缓冲区大小
open_file_cache max=200000 inactive=20s; # 文件描述符缓存
open_file_cache_valid 30s;
open_file_cache_min_uses 2;
open_file_cache_errors on;
}
upstream node_app {
least_conn; # 最少连接负载均衡
server 127.0.0.1:3000;
server 127.0.0.1:3001;
keepalive 32; # 保持的连接数
}
server {
location / {
proxy_pass http://node_app;
proxy_http_version 1.1;
proxy_set_header Connection "";
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
# 缓冲区优化
proxy_buffers 16 32k;
proxy_buffer_size 64k;
proxy_busy_buffers_size 128k;
}
}
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, code, signal) => {
console.log(`Worker ${worker.process.pid} died`);
cluster.fork(); // 自动重启
});
} else {
require('./app'); // 你的应用入口文件
}
// 使用性能钩子监控
const { performance, PerformanceObserver } = require('perf_hooks');
// 使用v8-compile-cache加速启动
require('v8-compile-cache');
// 使用fast-json-stringify替代JSON.stringify
const fastJson = require('fast-json-stringify');
// 生产环境设置
app.enable('trust proxy'); // 信任代理头
app.disable('x-powered-by'); // 移除X-Powered-By头
// 启用压缩
const compression = require('compression');
app.use(compression());
// 使用helmet增强安全性
const helmet = require('helmet');
app.use(helmet());
操作系统调优:
ulimit -n
)net.ipv4.tcp_*
内核参数)硬件优化:
容器化优化:
通过综合应用这些优化策略,可以显著提高Nginx+Node.js架构在高负载环境下的性能和稳定性。