gpt4 book ai didi

java - 如何解决谷歌应用引擎延迟问题?

转载 作者:行者123 更新时间:2023-12-01 17:34:41 24 4
gpt4 key购买 nike

我们的项目正在 Google App Engine 标准环境上运行,并按如下所述配置了自动缩放。应用程序中启用了预热请求,并且我们正在使用 Google Endpoints 服务。然而,我在不同的场景中面临着延迟问题。环境:Java 8,实例类型:F4_1G自动缩放配置: 最小实例数:2 最大并发请求数:80 最短待处理延迟:6 秒 最大待处理延迟:10 秒

我使用 JMeter 进行了测试,配置为发送 85 个异步请求加速周期为 10 秒。从应用程序日志中,我可以注意到 appengine 需要很长时间来处理请求。以下是我的问题

1.大部分请求因超时而失败。在图 1 中,我们可以发现该请求花费了 88.2 秒。我知道AppEngine自动缩放有60秒的请求超时限制。但我们已将自动缩放配置为至少 2 个实例,并且对最大实例数没有限制。 AppEngine 实例应该处理该请求,否则 AppEngine 应该扩展以处理该请求。 为什么没有发生? Image_1

  • 扩展时,请求需要 43.6 秒。在图 2 中,我们可以看到请求于 20:27:01:663 IST 发出,API 执行的第一行从 20:27:40:407 IST 开始。 在这段时间里发生了什么?我可以获得这段时间的日志吗? Image_2
  • 扩容后,后续请求也需要很长时间才能处理。例如,API 请求通常会在 2 秒内完成。在图 3 中,我们可以注意到,在没有加载请求过程的情况下,API 需要 42.4 秒,然后请求在 20:27:01:728 IST 到来。第一行 API 执行从 20:27:40:708 IST 开始。 在这段时间里发生了什么? Image_3
  • 最佳答案

    我认为这与 Java 8 运行时需要很长时间来部署新实例有关,因为 java 是一个繁重的运行时。

    部署时间超过60秒,您的无人值守请求将超时结束。

    我认为您可以改进升级策略,例如尝试使用更多实例启动服务并添加此选项“target_throughput_utilization”,以便在达到 80 个并发请求之前开始启动新实例

    文档指出:“当并发请求数达到等于 max-concurrent-requests 乘以 target-throughput-utilization 的值时,调度程序将启动一个新实例。”

    min-instances: 4 
    max-concurrent-requests: 80
    target_throughput_utilization:0.75
    min-pending-latency: 6s
    max-pending-latency: 10s

    在我的示例中,当实际实例有 (80 X 0.75) 60 个并发请求时,新实例将启动

    关于java - 如何解决谷歌应用引擎延迟问题?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61060999/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com