module.exports = { apps: [ { // 进程名称(自定义,好记:mqtt后端) name: "mqtt-dashboard-backend", // 后端入口文件(通用:app.js/index.js/server.js,99%的后端都是这三个,有其他名字改这里即可) script: "./dist/index.js", // 运行模式:fork 单进程 ✅后端推荐,MQTT服务用单进程足够,资源占用极低 exec_mode: "fork", instances: 1, // 运行环境:生产环境 production ✅后端必须配置 env: { NODE_ENV: "production", TZ: "Asia/Shanghai" // 设置时区为北京时间 }, // ======== 后端核心守护配置(重中之重,全部开启) ======== autorestart: true, // 进程崩溃/报错/被杀掉 → 自动重启 ✅必开 max_memory_restart: "200M", // 内存占用超200M自动重启,释放内存,防止内存泄漏 ✅后端必开 restart_delay: 500, // 崩溃后0.5秒重启,快速恢复服务 min_uptime: "3s", // 进程运行至少3秒才算稳定,避免无限重启 // ======== 后端日志配置(排查BUG必备,MQTT消息/报错全留存) ======== log_date_format: "YYYY-MM-DD HH:mm:ss", // 日志带时间戳,方便定位问题 out_file: "./logs/pm2-out.log", // 正常运行日志(比如MQTT连接日志) error_file: "./logs/pm2-error.log", // 错误日志(比如端口占用、代码报错) merge_logs: true, // 合并日志,方便查看 } ] };