我们的项目在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
我认为这与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个并发请求时启动