【问题标题】:PM2 keeps re-starting on Google app enginePM2 在谷歌应用引擎上不断重启
【发布时间】:2020-06-16 23:04:10
【问题描述】:

当我使用 PM2 v 3.5.0 在本地运行我的应用程序时一切正常,但是当我将它部署到 Google GCP 应用引擎 Flex 环境中时,PM2 会不断重启应用程序。

这是我的 PM2 配置文件

{
  "apps": [{
    "name"        : "prod_client",
    "script"      : "./bin/www",
    "exec_mode": "cluster_mode",
    "instances": 1,
    "watch"       : false,
    "env": {
      "NODE_ENV": "production"
    }
    },{
    "name"       : "prod_api",
    "script"     : "./src/server/apiServer.js",
    "exec_mode": "cluster_mode",
    "instances": 1,
    "watch"       : false,
    "env": {
      "NODE_ENV": "production"
    }
  }]
}

有趣的是,我没有得到任何有用的日志。请注意,在本地机器上一切正常,PM2 不会抱怨。

【问题讨论】:

  • PM2 有一个默认的负载均衡器和一个默认的自动重启选项。我认为这会干扰 Flex 环境。您是否尝试过禁用这两个功能并允许实例崩溃以便在 Stackdriver Login 中看到日志?
  • @NahuelVarela 没有尝试过。我会检查,但现在一些它如何与不同的代码库(我有它用于暂存环境部署)一起工作。它的工作很奇怪,除了数据库配置等一些配置之外,代码绝对没有区别
  • 很高兴看到它现在正在工作。您能否发布导致解决的步骤?因此,它将帮助处于相同情况的其他人。
  • @NahuelVarela 我在之前的评论中已经提到过,它使用不同的代码库(两个代码库,一个用于暂存,一个用于生产,两个分支,理想情况下只有环境和常量会改变)所以在这个带有生产环境和常量的案例分段代码工作正常,代码没有变化,这就是为什么我说它很奇怪。

标签: node.js express google-app-engine google-cloud-platform pm2


【解决方案1】:

我们遇到了同样的问题。这是由于 PM2 试图将文件写入存储,而 Google AppEngine (GAE) 通常不支持(更多内容将在此之后进行)。此外,我们还没有让它完全工作,因为遗憾的是,GAE 上的内存检查 pidusage 命令存在问题,尚未解决 [1]

因此,为了最初解决该问题,我们使用配置将日志记录和 pidfile 路径分别重定向到 /dev/stdout/dev/null。这让 PM2 工作了,但它仍然不能正常工作。例如,它很难读取 pidfile。

但是,GAE 确实允许 tmp 文件(我们使用的是 Standard,但我想 Flex 也有类似的支持)[2]。因此,我们删除了 pidfile 配置,而是将 start 脚本更改为设置 PM2_HOME=/tmp/.pm2。考虑到前面提到的pidusage 问题,这让我们尽可能地接近工作。

PM2_HOME=/tmp/.pm2 pm2 start ecosystem.config.js --env production --no-daemon --mini-list

ecosystem.config.js 配置类似于:

module.exports = {
    apps: [
        {
            name: "service",
            script: "main.js",
            kill_timeout: 15000,
            max_memory_restart: "400M",
            exec_mode: "cluster",
            instances: 1,
            out_file: "/dev/stdout",
            error_file: "/dev/stderr",
            env: {
                NODE_ENV: "development",
                BLAH: "1",
            },
            env_production: {
                NODE_ENV: "production",
                BLAH: "0",
            },
        },
    ],
};

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-05-01
    • 1970-01-01
    • 1970-01-01
    • 2011-05-06
    • 1970-01-01
    • 2021-02-24
    • 2018-03-27
    相关资源
    最近更新 更多