From a771bbad3135fa3ecd4133dc32cf42a200f46045 Mon Sep 17 00:00:00 2001 From: aaron <> Date: Thu, 19 Feb 2026 21:24:59 +0800 Subject: [PATCH] update --- PM2_USAGE.md | 365 ++++++++++++++++++++++++++++++++++++++++++++ ecosystem.config.js | 30 +++- 2 files changed, 387 insertions(+), 8 deletions(-) create mode 100644 PM2_USAGE.md diff --git a/PM2_USAGE.md b/PM2_USAGE.md new file mode 100644 index 0000000..de87772 --- /dev/null +++ b/PM2_USAGE.md @@ -0,0 +1,365 @@ +# PM2 进程管理使用说明 + +## 📋 简介 + +PM2 是一个进程管理器,可以让你的应用在后台持续运行,并支持自动重启、日志管理等功能。 + +## 🚀 快速开始 + +### 1. 安装 PM2 + +```bash +# 全局安装 PM2 +npm install -g pm2 + +# 验证安装 +pm2 --version +``` + +### 2. 启动应用 + +```bash +# 开发模式启动 +pm2 start ecosystem.config.js --env development + +# 生产模式启动 +pm2 start ecosystem.config.js --env production + +# 或者直接使用默认配置 +pm2 start ecosystem.config.js +``` + +### 3. 查看状态 + +```bash +# 查看所有进程状态 +pm2 status + +# 查看详细信息 +pm2 show stock-agent + +# 查看实时日志 +pm2 logs stock-agent + +# 查看错误日志 +pm2 logs stock-agent --err + +# 查看输出日志 +pm2 logs stock-agent --out +``` + +### 4. 管理进程 + +```bash +# 停止应用 +pm2 stop stock-agent + +# 重启应用 +pm2 restart stock-agent + +# 删除应用 +pm2 delete stock-agent + +# 停止所有应用 +pm2 stop all + +# 重启所有应用 +pm2 restart all +``` + +### 5. 监控 + +```bash +# 实时监控面板 +pm2 monit + +# 查看进程信息 +pm2 list +``` + +### 6. 日志管理 + +```bash +# 清空所有日志 +pm2 flush + +# 查看日志文件位置 +pm2 show stock-agent | grep log + +# 日志轮转(安装模块) +pm2 install pm2-logrotate +``` + +## 🔧 配置说明 + +### ecosystem.config.js 配置文件 + +```javascript +module.exports = { + apps: [{ + name: 'stock-agent', // 应用名称 + script: 'backend/app/main.py', // 启动脚本 + interpreter: 'python3', // 解释器 + cwd: './', // 工作目录 + instances: 1, // 实例数量 + autorestart: true, // 自动重启 + watch: false, // 文件监控(生产环境建议关闭) + max_memory_restart: '1G', // 内存超限重启 + error_file: './logs/pm2-error.log', // 错误日志 + out_file: './logs/pm2-out.log', // 输出日志 + log_file: './logs/pm2-combined.log',// 合并日志 + time: true, // 日志时间戳 + kill_timeout: 5000, // 停止超时 + min_uptime: '10s', // 最小运行时间 + max_restarts: 10, // 最大重启次数 + }] +}; +``` + +## 🛠️ 常用命令 + +### 开发环境 + +```bash +# 启动(开发模式) +pm2 start ecosystem.config.js --env development + +# 查看日志 +pm2 logs stock-agent + +# 重启 +pm2 restart stock-agent +``` + +### 生产环境 + +```bash +# 启动(生产模式) +pm2 start ecosystem.config.js --env production + +# 保存进程列表 +pm2 save + +# 设置开机自启 +pm2 startup +# 按照提示执行命令,然后运行 +pm2 save +``` + +## 📊 日志管理 + +### 查看日志 + +```bash +# 实时查看所有日志 +pm2 logs + +# 查看最近 100 行 +pm2 logs stock-agent --lines 100 + +# 查看错误日志 +pm2 logs stock-agent --err + +# 清空日志 +pm2 flush +``` + +### 日志文件位置 + +``` +./logs/pm2-error.log # 错误日志 +./logs/pm2-out.log # 输出日志 +./logs/pm2-combined.log # 合并日志 +``` + +## 🔍 故障排除 + +### 问题 1: 进程不断重启 + +```bash +# 查看重启次数 +pm2 list + +# 查看错误日志 +pm2 logs stock-agent --err + +# 检查配置 +pm2 show stock-agent +``` + +### 问题 2: 内存占用过高 + +```bash +# 查看内存使用 +pm2 monit + +# 如果内存超过 max_memory_restart,会自动重启 +``` + +### 问题 3: 端口被占用 + +```bash +# 查看端口占用 +lsof -i :8000 + +# 停止应用 +pm2 stop stock-agent + +# 修改 .env 中的端口后重启 +pm2 restart stock-agent +``` + +## 🚀 开机自启 + +### Linux/macOS + +```bash +# 1. 保存当前进程列表 +pm2 save + +# 2. 生成启动脚本 +pm2 startup + +# 3. 按照提示执行命令 + +# 4. 验证 +pm2 list +``` + +### 重启后恢复 + +```bash +# 恢复保存的进程列表 +pm2 resurrect +``` + +## 📝 最佳实践 + +### 1. 开发环境 + +```bash +# 使用开发模式 +pm2 start ecosystem.config.js --env development + +# 开启文件监控(可选) +pm2 start ecosystem.config.js --watch +``` + +### 2. 生产环境 + +```bash +# 使用生产模式 +pm2 start ecosystem.config.js --env production + +# 保存进程列表 +pm2 save + +# 设置开机自启 +pm2 startup +``` + +### 3. 日志管理 + +```bash +# 安装日志轮转模块 +pm2 install pm2-logrotate + +# 配置日志轮转 +pm2 set pm2-logrotate:max_size 10M +pm2 set pm2-logrotate:retain 7 +pm2 set pm2-logrotate:compress true +``` + +### 4. 监控告警 + +```bash +# 安装监控模块 +pm2 install pm2-server-monit + +# 查看监控 +pm2 monit +``` + +## 🎯 完整工作流程 + +### 首次部署 + +```bash +# 1. 确保依赖已安装 +cd backend +pip install -r requirements.txt +cd .. + +# 2. 配置 .env 文件 +cp .env.example .env +# 编辑 .env 文件 + +# 3. 创建日志目录 +mkdir -p logs + +# 4. 启动应用 +pm2 start ecosystem.config.js + +# 5. 保存进程列表 +pm2 save + +# 6. 查看状态 +pm2 status + +# 7. 查看日志 +pm2 logs stock-agent +``` + +### 日常维护 + +```bash +# 查看状态 +pm2 status + +# 查看日志 +pm2 logs stock-agent --lines 50 + +# 重启应用 +pm2 restart stock-agent + +# 清空日志 +pm2 flush +``` + +### 更新代码后 + +```bash +# 1. 拉取最新代码 +git pull + +# 2. 重启应用 +pm2 restart stock-agent + +# 3. 查看日志确认 +pm2 logs stock-agent --lines 20 +``` + +## 📚 参考链接 + +- PM2 官方文档: https://pm2.keymetrics.io/ +- PM2 GitHub: https://github.com/Unitech/pm2 + +## ⚠️ 注意事项 + +1. **生产环境**:关闭 `watch` 选项,避免性能问题 +2. **日志管理**:定期清理或配置日志轮转,避免磁盘占满 +3. **内存监控**:设置合理的 `max_memory_restart` +4. **开机自启**:生产环境建议设置开机自启 +5. **环境变量**:确保 `.env` 文件配置正确 + +## 🎉 完成 + +配置完成后,你的应用将: + +- ✅ 在后台持续运行 +- ✅ 崩溃后自动重启 +- ✅ 支持开机自启 +- ✅ 自动管理日志 +- ✅ 实时监控状态 + +所有系统(SmartAgent、CryptoAgent、StockAgent、模拟交易)都会自动启动并运行! diff --git a/ecosystem.config.js b/ecosystem.config.js index deb12cb..fd04ce0 100644 --- a/ecosystem.config.js +++ b/ecosystem.config.js @@ -3,17 +3,31 @@ module.exports = { name: 'stock-agent', script: 'backend/app/main.py', interpreter: 'python3', - cwd: '/Users/aaron/source_code/Stock_Agent', - env: { - ENV_FILE: '/Users/aaron/source_code/Stock_Agent/.env' - }, + interpreter_args: '--u', + // 自动获取当前目录 + cwd: process.cwd(), instances: 1, autorestart: true, watch: false, max_memory_restart: '1G', - error_file: './logs/err.log', - out_file: './logs/out.log', - log_file: './logs/combined.log', - time: true + error_file: './logs/pm2-error.log', + out_file: './logs/pm2-out.log', + log_file: './logs/pm2-combined.log', + time: true, + // 进程管理 + kill_timeout: 5000, + wait_ready: true, + // 健康检查 + min_uptime: '10s', + max_restarts: 10, + // 环境变量 + env_production: { + NODE_ENV: 'production', + DEBUG: 'False' + }, + env_development: { + NODE_ENV: 'development', + DEBUG: 'True' + } }] };