Node.js 节点上的预热请求导致损坏?

Node.js 节点上的预热请求导致损坏?,node.js,google-app-engine,Node.js,Google App Engine,我有一个使用自定义域在App Engine标准中运行的节点服务器。一切正常 当我部署一个新版本时,会有一个巨大的延迟峰值,因为旧实例停止,新实例启动 通过阅读文档,我似乎需要: 通过添加到app.yaml启用预热请求 入境服务: 热身 为/_ah/预热创建处理程序 不升级部署新版本:gcloud Deploy--不升级app.yaml 在“应用程序引擎版本”页面中,使用“迁移”将流量从旧移动到新 我是AppEngine的新手,文档很模糊,所以我有问题和一个主要问题: 预热处理器的作用是什么?

我有一个使用自定义域在App Engine标准中运行的节点服务器。一切正常

当我部署一个新版本时,会有一个巨大的延迟峰值,因为旧实例停止,新实例启动

通过阅读文档,我似乎需要:

  • 通过添加到app.yaml启用预热请求 入境服务:
    • 热身
  • 为/_ah/预热创建处理程序
  • 不升级部署新版本:gcloud Deploy--不升级app.yaml
  • 在“应用程序引擎版本”页面中,使用“迁移”将流量从旧移动到新
  • 我是AppEngine的新手,文档很模糊,所以我有问题和一个主要问题:

  • 预热处理器的作用是什么?由于我在节点应用程序启动时初始化了所有需要初始化的内容,因此该处理程序无需执行任何操作
  • 处理程序是可选的吗?我想是的,因为我在某个地方读到404响应就可以了
  • 如果不是可选的,那么期望得到什么样的响应

  • 这是大人物!:

  • 我已经试过了(省略处理程序)。“迁移”按钮变为可用,并显示为将流量迁移到新版本,但是,过了一段时间,我的站点开始失败。每次迁移后问题就不同了——一次是损坏/无效的HTML,另一次是JavaScript语法错误,另一次是整个站点被包装在我没有编写的HTML的PRE标记中!我发现“修复”损坏的唯一方法是删除入站服务:-从app.yaml预热并重新部署

    更奇怪的是,只有从自定义域访问站点时才会发生损坏。如果我点击appspot.com地址,一切正常

    同样的代码在传统的web服务器上已经运行了一年多


    我头痛。感激地收到的任何帮助/见解

    预热请求通常不涉及新版本部署场景(但是,如果您当时的实时通信量太高,无法由单个实例处理,则可能会涉及这些请求)。只有当您已经有至少一个实例在运行,并且需要启动新实例来处理传入流量增加时(与正在运行的实例版本相同!)-在新实例成功处理预热请求之前,不会将实时流量定向到新实例,从而表明他们已经准备好处理真实的用户请求

    是的,预热请求是可选的。当动态缩放启动其他实例以处理流量增加时,不使用预热请求将导致延迟增加。但是如果您决定不使用它们,请确保您也不启用热身入站服务。换句话说,列表中的度量值1和度量值2属于一个整体,要么同时执行,要么不执行

    在部署期间执行1而不执行2可能会导致一些中断:如果GAE决定在流量迁移期间启动多个实例,它可能会向某些实例发送预热请求,这些请求将失败,因为没有预热处理程序,导致GAE声明实例不健康并尝试重新启动它们。您可以检查开发者控制台上的屏幕,选择新部署的服务版本和实例图,并查找创建的活动的图来检查此理论。但即使得到证实,我也不确定这些事件是否能解释你描述的症状

    只有列表中的措施3和4与减少新版本部署期间的延迟相关。正常情况下,使用这些步骤时不会造成流量损失,当然,前提是新版本没有故障。至少这是理论