module.exports = { apps: [ { name: 'complete-trading-system', script: 'run-production.ts', interpreter: 'tsx', instances: 1, autorestart: true, watch: false, max_memory_restart: '1G', // 环境变量 env: { NODE_ENV: 'development', LOG_LEVEL: 'info', HEALTH_CHECK_PORT: 3001, }, env_production: { NODE_ENV: 'production', LOG_LEVEL: 'info', LOG_DIR: './logs', HEALTH_CHECK_PORT: 3001, ENABLE_HEALTH_API: 'true', ENABLE_STRUCTURED_LOGGING: 'true', }, // 日志配置 - 对冲交易系统需要详细的日志记录 log_file: './logs/pm2-combined.log', out_file: './logs/pm2-out.log', error_file: './logs/pm2-error.log', log_date_format: 'YYYY-MM-DD HH:mm:ss Z', // 重启策略 - 对冲系统需要稳定运行 min_uptime: '30s', // 最少运行30秒才认为启动成功 max_restarts: 5, // 最大重启次数 restart_delay: 5000, // 重启延迟5秒 // 监控配置 pmx: true, monitoring: { // 对冲交易关键指标监控 custom_probes: [ { name: 'Active Positions', agg_type: 'avg', }, { name: 'Global Delta', agg_type: 'avg', }, { name: 'Hedge Executions/min', agg_type: 'sum', }, ], }, // 进程配置 exec_mode: 'fork', // 对冲系统使用fork模式,避免cluster模式的状态问题 // 优雅关闭配置 - 确保对冲仓位安全关闭 kill_timeout: 30000, // 30秒优雅关闭时间 wait_ready: true, // 等待应用就绪信号 listen_timeout: 10000, // 监听超时10秒 // 健康检查配置 health_check: { endpoint: 'http://localhost:3001/health', interval: 30000, // 30秒检查一次 timeout: 10000, // 10秒超时 unhealthy_threshold: 3, // 连续3次失败认为不健康 healthy_threshold: 2, // 连续2次成功认为健康 }, }, ], // 部署配置 deploy: { production: { user: 'deploy', host: ['production-server'], ref: 'origin/main', repo: 'git@github.com:your-repo/trading-hedge-system.git', path: '/var/www/trading-hedge-system', 'pre-deploy-local': '', 'post-deploy': 'yarn install && yarn build && pm2 reload ecosystem.config.js --env production', 'pre-setup': '', // 对冲系统特殊部署要求 'pre-deploy': [ 'echo "检查当前持仓状态..."', 'curl -s http://localhost:3001/health/positions || echo "系统未运行"', ].join(' && '), 'post-deploy-actions': [ 'sleep 10', // 等待系统启动 'curl -f http://localhost:3001/health || exit 1', // 健康检查 'echo "对冲交易系统部署完成"', ].join(' && '), }, staging: { user: 'deploy', host: ['staging-server'], ref: 'origin/develop', repo: 'git@github.com:your-repo/trading-hedge-system.git', path: '/var/www/trading-hedge-system-staging', 'post-deploy': 'yarn install && yarn build && pm2 reload ecosystem.config.js --env staging', }, }, }