跳到主要内容

PM2 ecosystem 配置写成多环境模板

· 阅读需 2 分钟
一介布衣
全栈开发者

Node 服务上线以后,很多团队第一次认真写 ecosystem.config.js,都会发现它不像想象中那么“随便填几个参数”就完了。环境变量、实例数、日志位置、重启策略,最后都会落到这份文件里。

所以我更愿意把它当成部署模板,而不是单纯的启动脚本。

一份配置里先把环境切面留出来

比较常见的写法,是把通用配置放在 apps 里,再通过 env_developmentenv_stagingenv_production 这类字段切换环境变量。

这样做好处很直接:团队看到文件时,就能知道不同环境到底差在哪,而不是靠文档口头约定。

reloadrestart 的语义要分清

PM2 之所以适合线上使用,一个关键点是它提供了更平滑的重载能力。对无状态 Node API 来说,能用 reload 的场景尽量别直接 restart,这样流量切换会更温和。

但前提是应用启动过程要足够快,连接释放也要干净。

实例数别只盯着 CPU 核心数

很多示例会写 instances: max,这在简单场景里没问题,但线上是否真的要开满,还得看内存占用、数据库连接数和日志量。如果服务本身依赖比较重,一味开多实例反而会让机器更紧张。

配置模板的价值,就是把这些取舍显式写出来,便于后续调整。

日志和重启策略最好一起定

error_fileout_filemax_memory_restart 这类配置,不应该等服务出故障后再补。它们本质上也是部署边界的一部分。

只要这层先收好,排障体验会比“线上只有一个 nohup 输出文件”强太多。

小结

PM2 的 ecosystem 配置写得好,意味着多环境部署差异、进程策略和日志落点都被提前表达清楚了。对 2021 年多数 Node 服务来说,这一步非常值得认真做。