使用PM2启动多实例后无法获取NODE_APP_INSTANCE变量求助
解决pm2集群模式下无法获取NODE_APP_INSTANCE的问题
以下是几个可行的排查和解决步骤:
确认pm2集群模式是否正常启用
执行pm2 list查看进程状态,确保MODE列显示为cluster,INSTANCES列显示为3。如果模式是fork,说明集群模式未生效,检查启动命令是否正确(-i 3是集群模式的触发参数)。使用pm2配置文件启动,确保默认环境变量注入
创建ecosystem.config.js配置文件:module.exports = { apps: [ { name: 'your-app', script: 'script.js', instances: 3, autorestart: false, args: 'myarg', merge_env: true // 强制启用默认环境变量与自定义变量合并 } ] };然后执行
pm2 start ecosystem.config.js启动,再测试变量是否能正常获取。简化代码排除异步干扰
将你的代码改为同步执行,避免不必要的异步逻辑:console.log("Instance ID = " + process.env.NODE_APP_INSTANCE); console.log("PM2 Instance ID = " + process.env.INSTANCE_ID); process.exit();检查是否存在环境变量覆盖配置
如果之前设置过merge_env: false的pm2配置,会阻止默认环境变量(包括NODE_APP_INSTANCE)的注入,需要将其改为merge_env: true。更新pm2到最新稳定版
你的pm2版本为5.4.2,部分旧版本可能存在集群模式变量注入的bug,执行npm install -g pm2@latest更新后,重新启动实例测试。
内容的提问来源于stack exchange,提问作者Jean François Manatane
相关产品推荐
相关产品推荐

