【发布时间】:2014-11-16 18:18:23
【问题描述】:
我在 GAE 遇到自动缩放问题。
我的一个应用程序模块具有实例类 F4 并遵循自动缩放设置。
<automatic-scaling>
<min-idle-instances>2</min-idle-instances>
<max-idle-instances>5</max-idle-instances>
<min-pending-latency>automatic</min-pending-latency>
<max-pending-latency>30ms</max-pending-latency>
<max-concurrent-requests>100</max-concurrent-requests>
</automatic-scaling>
我将最大实例设置为 5,但是当我们运行一些有 300 个用户的 jmeter 测试时,运行实例数增加到 40 以上。 所以看起来GAE没有正确处理这个参数。 有人遇到过这个问题吗?
【问题讨论】:
-
那是因为你设置了IDLE实例,也就是当你对少量请求没有NO时,总是运行的实例数。由 GAE 决定何时需要一个新实例来正确处理所有请求。
-
您可以增加 min-pending-latency 设置并确保启用 multi-threading 以减少实例数量(除了优化代码)。
-
确保您的 JMeter 测试计划模拟真实的流量配置文件也是值得的。对于 App Engine 调度程序,300 个线程的突发和 300 个用户的稳定状态之间存在很大差异。 300 个用户的 40 个实例表明您的响应延迟非常高。根据请求的性质,我们在 5 到 10 个实例上管理了超过 1000 个并发用户。
-
自动扩展的重点是始终有足够的实例来平稳运行。如果您真的想要硬上限,请查看基本缩放developers.google.com/appengine/docs/java/modules/…