You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

生产环境NodeJS Express应用PM2生态配置最优参数选择

PM2 生产环境配置实践建议

cluster_mode 实例数设置

  • 优先参考服务器用途和服务类型:如果服务器仅部署当前Express服务,且服务以IO密集型逻辑为主(常规接口服务,包含数据库查询、第三方接口调用等场景),可设置为服务器物理CPU核数的1~1.5倍;如果服务包含大量CPU密集型计算(加解密、文件处理等),不要超过物理CPU核数,避免过多上下文切换带来的性能损耗。
  • 如果服务器同时部署了Nginx、数据库、缓存等其他服务,需要预留足够的CPU资源给这些进程,实例数需在上述基础上适当下调,比如8核物理机上同时跑MySQL和Redis,可将实例数设置为5~6即可。
  • 不要盲目开过多实例:每个Node实例独立占用内存,实例总数越高总内存消耗越大,要结合服务器可用内存总量调整,避免整体内存不足触发系统OOM Kill。

max_memory_restart 阈值设置

  • 先确定服务正常运行的内存基线:通过压测或者线上运行观测,拿到服务峰值流量下的正常内存占用值,阈值设置为该值的1.52倍即可,留出足够冗余避免正常峰值时误重启。比如常规Express服务峰值内存占200M,可设置为`300M`400M。
  • 阈值不能超过V8堆内存上限:64位系统下Node默认的V8老年代堆内存上限约1.4G,未调整V8参数的情况下,max_memory_restart不要超过1.2G,否则还没触发PM2重启,V8会先抛出内存溢出错误导致服务崩溃。
  • 若你手动调整了V8堆上限(启动参数加--max-old-space-size=xxx,单位为MB),max_memory_restart要比你设置的V8堆上限低10%~20%,留出缓冲空间。
  • 注意总内存约束:单实例阈值乘以实例总数,不要超过服务器可用内存的70%,避免多个实例同时达到阈值时占满服务器内存。

注意:如果服务出现频繁触发重启的情况,优先排查代码内存泄漏问题,不要靠调高阈值兜底,重启只是临时补救方案。

内容的提问来源于stack exchange,提问作者duthaho

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.26 00:54:04