插件窝 干货文章 NGINX和PM2: 提升VPS服务器的性能和稳定性

NGINX和PM2: 提升VPS服务器的性能和稳定性

NGINX PM2 配置 监控 851    来源:    2025-04-11

NGINX与PM2:提升VPS服务器性能与稳定性的完美组合

核心优势对比

工具 主要功能 适用场景 性能特点
NGINX Web服务器/反向代理 静态内容/负载均衡 高并发/低内存占用
PM2 Node.js进程管理 Node.js应用管理 自动重启/负载均衡

最佳实践方案

1. NGINX优化配置

# /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;
}

2. PM2高级配置

// 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"
  }]
}

3. 组合部署架构

客户端 → NGINX (反向代理/负载均衡/静态文件) → PM2集群 (Node.js应用) → 数据库

性能调优技巧

  1. NGINX负载均衡配置:

    upstream node_app {
       least_conn; # 最少连接算法
       server 127.0.0.1:3000;
       server 127.0.0.1:3001;
       keepalive 64; # 保持连接池
    }
    
  2. PM2监控与自动扩展:

    # 安装监控模块
    pm2 install pm2-server-monit
    
    # 设置自动扩展规则
    pm2 scale my-app +2 # 增加2个实例
    
  3. 资源限制策略:

    # 使用PM2限制CPU使用率
    pm2 start app.js --max-cpu-restart 80
    

稳定性保障措施

  1. 日志集中管理:

    # 使用PM2日志轮转
    pm2 install pm2-logrotate
    pm2 set pm2-logrotate:max_size 10M
    pm2 set pm2-logrotate:retain 30
    
  2. 零停机部署:

    # PM2优雅重启
    pm2 reload all
    
    # NGINX热重载配置
    sudo nginx -t && sudo nginx -s reload
    
  3. 健康检查配置:

    location /health {
       proxy_pass http://node_app;
       proxy_set_header Host $host;
       health_check interval=10 fails=3 passes=2;
    }
    

监控与警报方案

  1. PM2监控面板:

    pm2 monit
    
  2. NGINX状态监控:

    location /nginx_status {
       stub_status on;
       access_log off;
       allow 127.0.0.1;
       deny all;
    }
    
  3. 集成外部监控工具:

    # 使用Keymetrics进行远程监控
    pm2 link <secret> <public>
    

通过合理配置NGINX和PM2的组合,您可以显著提升VPS服务器的性能和稳定性,同时保持应用的可用性和可维护性。