我正在对我的 GAE/J 应用程序运行两个不同的负载测试。
负载测试 #1 (LT1):每 2 秒调用 /rest/cheap1,每 60 秒调用 /rest/cheap2
Loadtest #2 (LT2):除了 LT1 的 URL,每个用户调用四个不同的 URL /rest/expensive{1,2,3,4}。这些 URL 中的每一个大约每 60 秒调用一次。
两个负载测试都进行
- 在 30 分钟内从 0 到 10.000 个并发用户,
- 在 10.000 个用户中停留 30 分钟,
- 然后在 30 分钟内下降到 0 个用户。
URL 的主要区别在于延迟。平均而言,延迟为
- /rest/cheap{1,2} 为 70 毫秒
- /rest/expensive{1,2,3,4} 600 毫秒
运行 LT1 时,GAE 仅启动少数实例,每个实例最多可发出70 个请求/秒。在 LT2 中添加 /rest/expensive{1,2,3,4} 后,GAE 启动的实例显着增加,每个实例仅放置5-7 个请求/秒,导致成本增加。
我可以做些什么来使用更少的实例?有没有办法利用最频繁操作 /rest/cheap1 的小延迟?GAE 调度程序有很多设置,例如最小/最大挂起延迟、最小/最大空闲实例、实例类。在这种情况下,我如何利用它们来发挥自己的优势?
/rest/expensive{1,2,3,4} 的延迟更改如何影响实例计数?例如,如果响应时间减半,GAE 会启动一半的实例?
设置 min 会如何影响实例计数。等待延迟 >= 600 毫秒?
更新:
- 是的,我在我的应用程序中将 threadsafe 设置为 true。