【问题标题】:Google App Engine - node.js - server handles all GET/POST requests except first oneGoogle App Engine - node.js - 服务器处理除第一个请求之外的所有 GET/POST 请求
【发布时间】:2019-12-26 11:42:33
【问题描述】:

我正在运行一个 Google App Engine node.js 服务器,该服务器仅用于处理 GET 和 POST 请求。

服务器完美地处理所有这些 GET 和 POSTS 请求,除了应用程序部署后的第一个请求。

缩放类型在 F1 实例类上是自动的。

日志中没有错误。

如果在部署后我发出命令“gcloud app browse”,我不会遇到这个问题。

所以这看起来真的是一个初始实例问题,但我找不到解决它的方法。

任何帮助将不胜感激!

雨果

【问题讨论】:

    标签: node.js google-app-engine


    【解决方案1】:

    对实例的第一个请求称为Loading Request,在此请求期间,App Engine 会进行初始化(加载处理请求所需的任何库和资源),因此会导致您提到的问题。如上述文档所述:

    仅加载启动所需的代码。

    尽可能少地访问磁盘。

    在某些情况下,从 zip 或 jar 文件加载代码比从许多单独的文件加载要快。

    我还建议你配置Warmup requests to improve the performance

    【讨论】:

    • 嗨,丹尼尔,非常感谢。我还尝试设置预热请求,但似乎没有解决问题。阅读有关热身请求的文档,提到“请注意,不能保证调用热身请求”。我不知道如何解决这个问题。
    • 请注意,加载请求是预期行为。您是否尝试过描述的任何其他方法?例如,您可以修改 app.yaml 并包含 entrypoint 以覆盖 default startup behavior 并仅加载处理请求的最少代码。请注意,为了获得更好的性能,您的 start 脚本应尽可能轻量级,并且很大程度上取决于您的应用程序需求。
    【解决方案2】:

    刚刚找到答案。需要两个步骤

    1- 在 app.yaml 中包含以下内容:

    自动缩放: min_idle_instances: 1

    2- 如 Daniel(见上文)所指出的那样创建一个预热请求

    希望这对其他人有用:-)

    雨果

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-05-18
      • 1970-01-01
      • 2014-08-05
      • 2013-08-15
      • 2019-06-26
      相关资源
      最近更新 更多