【问题标题】:Long response time for first request (+40 seconds) on my appengine standard (java11)我的应用引擎标准(java 11)上的第一个请求的响应时间长(+40 秒)
【发布时间】:2020-06-06 16:28:54
【问题描述】:

我刚刚在应用引擎 (www.mibar.es) 中部署了我的应用,当它长时间不使用时,它需要 40 多秒才能唤醒并处理第一个请求。在那之后,需要一秒钟来处理下一个请求。我怎样才能减少那个时间?为什么总是没有准备好?我怎样才能让它随时准备就绪?

我在 GCP 控制台上没有显示任何错误,并在搜索我发现的关于 https://cloud.google.com/appengine/docs/standard/java11/configuring-warmup-requests#enabling_warmup_requests 的相同问题

所以这应该包含在 yaml 文件中:

inbound_services:
- warmup

我想知道我是否还有其他需要做的事情,或者是否有人遇到过同样的问题:

runtime: java11
env: standard
instance_class: F4
handlers:
  - url: /(.*)
    script: auto
    secure: always
  - url: .*
    script: auto
automatic_scaling:
  min_idle_instances: automatic
  max_idle_instances: automatic
  min_pending_latency: automatic
  max_pending_latency: automatic
  max_instances: 1
network: {}

新的更新配置 Yaml 最小实例 1 仍然需要 +30 来发送第一个请求:


runtime: java11
env: standard
instance_class: F4
handlers:
  - url: /(.*)
    script: auto
    secure: always
  - url: .*
    script: auto
automatic_scaling:
  min_idle_instances: automatic
  max_idle_instances: automatic
  min_pending_latency: automatic
  max_pending_latency: automatic
  min_instances: 1
  max_instances: 1
network: {}

感谢您的帮助,如果您需要任何其他配置文件,请告诉我。

【问题讨论】:

    标签: google-app-engine


    【解决方案1】:

    根据您当前的设置,这预计会在一段时间后发生。如果您的应用没有收到任何请求,它将缩减为 0 个实例,因此一旦请求到达,它必须再次创建一个实例才能为流量提供服务,并将此“延迟”添加到请求中。

    当您的应用程序负载增加时,预热请求将有助于加快创建实例的过程。但正如文档所述,有时会发出加载请求而不是热身请求,特别是当应用程序有 0 个实例正在服务并且必须创建另一个实例时:

    在某些情况下,会发送加载请求:例如,如果实例是第一个启动的实例,或者流量急剧增加

    要克服这个问题,您至少可以运行 1 个实例,甚至可以使用 min_idle_instances

    【讨论】:

    • 感谢您的帮助。在您发表评论后,我修改了 yaml 文件,但仍在等待 +30 秒让应用程序唤醒。是否有意义?你认为 inbound_services: - 热身会有帮助吗?
    • 每当空闲实例开始播放时,热身很有用,否则就没有用。无论如何,它还取决于您加载的依赖项的数量。
    • 添加 inbound_services 时效果很好: - 对 yaml 配置进行预热。谢谢
    猜你喜欢
    • 1970-01-01
    • 2016-08-01
    • 1970-01-01
    • 2019-11-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多