You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

EC2 t2.micro服务器上Node.js应用保活方案咨询

针对EC2 t2.micro上Node.js应用的保活方案及问题排查

先解决nohup失效的问题

你用nohup后关闭SSH进程停止,是因为启动时没正确脱离终端会话,正确的启动命令应该是:

nohup node index.js > app.log 2>&1 &
  • > app.log 2>&1 把标准输出和错误输出重定向到日志文件,避免终端依赖
  • 末尾的&让进程后台运行,此时即使关闭SSH,进程也不会收到SIGHUP信号被终止

优化pm2/forever的使用(解决崩溃问题)

t2.micro只有1G内存,应用崩溃大概率是内存耗尽或CPU积分耗尽导致的,给pm2加资源限制参数即可缓解:

  • 限制内存阈值,达到后自动重启:
    pm2 start index.js --max-memory-restart 200M
    
  • 给Node进程设置内存上限,避免内存泄漏耗尽资源:
    pm2 start index.js --node-args="--max-old-space-size=256"
    
  • 用pm2 monit实时监控CPU、内存占用,排查是否有内存泄漏或异常负载

更可靠的系统级保活方案

1. systemd(推荐,Linux系统原生支持)

这是最稳定的保活方式,属于系统级服务,不受用户会话影响,支持开机自启:

  1. 创建服务配置文件:
    sudo nano /etc/systemd/system/node-app.service
    
  2. 写入以下内容(替换成你的实际路径和用户名):
    [Unit]
    Description=Node.js 应用服务
    After=network.target
    
    [Service]
    User=ubuntu  # 你的服务器登录用户名
    WorkingDirectory=/home/ubuntu/your-app-dir  # 应用所在目录
    ExecStart=/usr/bin/node index.js  # node的实际路径,可用`which node`查询
    Restart=always  # 进程崩溃/系统重启后自动启动
    RestartSec=10  # 重启间隔10秒
    Environment=NODE_ENV=production
    
    [Install]
    WantedBy=multi-user.target
    
  3. 启用并启动服务:
    sudo systemctl daemon-reload
    sudo systemctl start node-app
    sudo systemctl enable node-app  # 设置开机自启
    
  4. 查看状态和日志:
    sudo systemctl status node-app
    journalctl -u node-app -f  # 实时查看日志
    

2. supervisord

另一个常用的进程管理工具,适合多进程管理场景:

  1. 安装supervisord(Ubuntu/Debian):
    sudo apt update && sudo apt install supervisor
    
  2. 创建应用配置文件:
    sudo nano /etc/supervisor/conf.d/node-app.conf
    
  3. 写入配置:
    [program:node-app]
    directory=/home/ubuntu/your-app-dir
    command=/usr/bin/node index.js
    autostart=true
    autorestart=true
    user=ubuntu
    stdout_logfile=/var/log/node-app.log
    stderr_logfile=/var/log/node-app.err.log
    
  4. 重启服务生效:
    sudo supervisorctl reload
    
  5. 管理命令:
    sudo supervisorctl start node-app  # 启动
    sudo supervisorctl stop node-app   # 停止
    sudo supervisorctl restart node-app # 重启
    

关键优化建议(针对t2.micro资源限制)

  • 排查应用内存泄漏:用node --inspect连接调试,或用pm2 dump导出内存快照分析
  • 清理不必要的依赖、临时文件,避免磁盘空间不足
  • 开启Node.js的--expose-gc参数,手动触发垃圾回收(仅应急用,不推荐长期依赖)

内容的提问来源于stack exchange,提问作者user19730992

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.13 17:20:35