PM2 ecosystem 配置写成多环境模板
· 阅读需 2 分钟
Node 服务上线以后,很多团队第一次认真写 ecosystem.config.js,都会发现它不像想象中那么“随便填几个参数”就完了。环境变量、实例数、日志位置、重启策略,最后都会落到这份文件里。
所以我更愿意把它当成部署模板,而不是单纯的启动脚本。
一份配置里先把环境切面留出来
比较常见的写法,是把通用配置放在 apps 里,再通过 env_development、env_staging、env_production 这类字段切换环境变量。
这样做好处很直接:团队看到文件时,就能知道不同环境到底差在哪,而不是靠文档口头约定。
reload 和 restart 的语义要分清
PM2 之所以适合线上使用,一个关键点是它提供了更平滑的重载能力。对无状态 Node API 来说,能用 reload 的场景尽量别直接 restart,这样流量切换会更温和。
但前提是应用启动过程要足够快,连接释放也要干净。
实例数别只盯着 CPU 核心数
很多示例会写 instances: max,这在简单场景里没问题,但线上是否真的要开满,还得看内存占用、数据库连接数和日志量。如果服务本身依赖比较重,一味开多实例反而会让机器更紧张。
配置模板的价值,就是把这些取舍显式写出来,便于后续调整。
日志和重启策略最好一起定
像 error_file、out_file、max_memory_restart 这类配置,不应该等服务出故障后再补。它们本质上也是部署边界的一部分。
只要这层先收好,排障体验会比“线上只有一个 nohup 输出文件”强太多。
小结
PM2 的 ecosystem 配置写得好,意味着多环境部署差异、进程策略和日志落点都被提前表达清楚了。对 2021 年多数 Node 服务来说,这一步非常值得认真做。
