我们的项目在Google App Engine标准环境中运行,并按如下所述配置了自动缩放功能。应用中启用了热身请求,我们正在使用Google Endpoints服务。但是,在不同的情况下,我面临着延迟问题。 环境: Java 8 ,实例类型: F4_1G 自动缩放的配置: 最小背景:2 最大并发请求数:80 最小等待等待时间:6s max-pending-latency:10秒
我在JMeter上进行了测试,并配置为发送 85个异步请求,且其启动时间为10秒。 从应用程序日志中,我可以注意到appengine需要很长时间来处理请求。以下是我的问题
1。大多数请求由于超时而失败。在图1中,我们可以发现请求花费了88.2秒。我知道AppEngine自动缩放具有60秒的请求超时限制。但是我们配置了至少2个实例的自动缩放,并且max-instance没有限制。 AppEngine实例应处理请求,否则AppEngine应扩大规模以处理请求。 为什么没有发生? Image_1
答案 0 :(得分:1)
我认为这与Java 8运行时有关,因为Java是繁重的运行时,因此Java 8运行时需要花费很长时间来部署新实例。
部署时间超过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个并发请求时启动