工具 | 主要功能 | 适用场景 | 性能特点 |
---|---|---|---|
NGINX | Web服务器/反向代理 | 静态内容/负载均衡 | 高并发/低内存占用 |
PM2 | Node.js进程管理 | Node.js应用管理 | 自动重启/负载均衡 |
# /etc/nginx/nginx.conf 核心优化部分
worker_processes auto; # 自动匹配CPU核心数
events {
worker_connections 1024; # 每个worker进程的最大连接数
multi_accept on; # 同时接受多个新连接
use epoll; # Linux高效事件模型
}
http {
sendfile on; # 启用高效文件传输
tcp_nopush on; # 优化数据包发送
tcp_nodelay on; # 禁用Nagle算法
keepalive_timeout 65; # 保持连接时间
types_hash_max_size 2048;
# Gzip压缩配置
gzip on;
gzip_comp_level 5;
gzip_min_length 256;
gzip_types text/plain text/css application/json application/javascript text/xml;
# 静态文件缓存
open_file_cache max=200000 inactive=20s;
open_file_cache_valid 30s;
open_file_cache_min_uses 2;
open_file_cache_errors on;
}
// ecosystem.config.js 示例
module.exports = {
apps: [{
name: "my-app",
script: "app.js",
instances: "max", // 使用所有CPU核心
exec_mode: "cluster", // 集群模式
autorestart: true,
watch: false,
max_memory_restart: "1G", // 内存超过1G自动重启
env: {
NODE_ENV: "production"
},
error_file: "./logs/err.log",
out_file: "./logs/out.log",
merge_logs: true,
log_date_format: "YYYY-MM-DD HH:mm:ss"
}]
}
客户端 → NGINX (反向代理/负载均衡/静态文件) → PM2集群 (Node.js应用) → 数据库
NGINX负载均衡配置:
upstream node_app {
least_conn; # 最少连接算法
server 127.0.0.1:3000;
server 127.0.0.1:3001;
keepalive 64; # 保持连接池
}
PM2监控与自动扩展:
# 安装监控模块
pm2 install pm2-server-monit
# 设置自动扩展规则
pm2 scale my-app +2 # 增加2个实例
资源限制策略:
# 使用PM2限制CPU使用率
pm2 start app.js --max-cpu-restart 80
日志集中管理:
# 使用PM2日志轮转
pm2 install pm2-logrotate
pm2 set pm2-logrotate:max_size 10M
pm2 set pm2-logrotate:retain 30
零停机部署:
# PM2优雅重启
pm2 reload all
# NGINX热重载配置
sudo nginx -t && sudo nginx -s reload
健康检查配置:
location /health {
proxy_pass http://node_app;
proxy_set_header Host $host;
health_check interval=10 fails=3 passes=2;
}
PM2监控面板:
pm2 monit
NGINX状态监控:
location /nginx_status {
stub_status on;
access_log off;
allow 127.0.0.1;
deny all;
}
集成外部监控工具:
# 使用Keymetrics进行远程监控
pm2 link <secret> <public>
通过合理配置NGINX和PM2的组合,您可以显著提升VPS服务器的性能和稳定性,同时保持应用的可用性和可维护性。