如何解决Google App Engine延迟?

问题描述 投票:0回答:1

我们的项目在Google App Engine标准环境中运行,并按如下所述配置了自动缩放功能。应用中启用了热身请求,我们正在使用Google Endpoints服务。但是,我在不同情况下都面临延迟问题。环境:Java 8,实例类型:F4_1G自动缩放的配置:最小实例:2最大并发请求数:80最小等待等待时间:6smax-pending-latency:10s

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

1。由于超时,大多数请求失败。在图1中,我们可以发现请求花费了88.2秒。我知道AppEngine自动缩放具有60秒的请求超时限制。但是我们配置了至少2个实例的自动缩放,并且max-instance没有限制。 AppEngine实例应处理请求,否则AppEngine应扩大规模以处理请求。 为什么不发生?Image_1

  1. 在扩大规模时,请求需要43.6秒。在图2中,我们可以看到请求是在20:27:01:663 IST发出的,并且API执行的第一行是从20:27:40:407 IST开始的。 两次之间发生了什么?我可以获取这段时间的日志吗?Image_2
  2. 放大后,后续请求也需要很长时间才能处理。例如,一个API请求通常在2秒内完成。在图3中,我们可以注意到API花费了42.4s的时间而没有加载请求过程,然后请求在IST 20:27:01:728发出。 API执行的第一行开始于IST 20:27:40:708。 两次之间发生了什么?Image_3
java google-app-engine google-cloud-platform paas google-cloud-endpoints-v2
1个回答
0
投票

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

部署时间超过60秒,您的无人参与请求将因超时而终止。

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

文档指出:“当并发请求数达到等于最大并发请求数乘以目标吞吐量利用率的值时,调度程序将启动一个新实例。”

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个并发请求时启动

© www.soinside.com 2019 - 2024. All rights reserved.