gpt4 book ai didi

java - 在 GAE 中实现一致的响应时间?

转载 作者:行者123 更新时间:2023-11-30 11:35:31 25 4
gpt4 key购买 nike

在对我的应用运行负载测试时,我发现响应时间非常一致。一旦 GAE 上的负载水平保持不变,平均响应时间就会变得越来越小。 但我希望在每秒接收的请求少得多的其他应用程序上具有相同的一致性。在那些我永远不需要支持超过 ~3 个请求/秒的请求中。

Reading the docs让我觉得增加最小空闲实例的数量应该会导致更一致的响应时间。但即便如此,每次 GAE 的调度程序认为需要更多实例时,客户端仍然会看到更高的响应时间。我正在寻找一种用户看不到那些初始缓慢请求的设置。

当我将最小空闲实例数增加到 1 时,我希望 GAE 仅使用一个驻留实例。随着负载的增加,它应该启动并预热新的(动态)实例。 Only once they are warmed up ,GAE应该向他们发送请求。 但从响应时间来看,似乎客户端请求在提出时到达动态实例。因此,这些请求需要很长时间(最多 30 秒)。

  • 如果我的预热代码不完整,会发生这种情况吗?
  • 对动态实例的首次调用是否会如此缓慢,因为它们涉及尚未预热的代码路径?

在负载测试期间或当有足够多的人使用该应用程序时,我没有遇到此问题。但是当还没有人使用该应用程序时,我的测试环境实际上无法被客户使用,例如早上。

谢谢!

最佳答案

一些通用的想法:

  • 30 秒的实例启动时间似乎非常多。我们做了很多初始化(包括数据库命中),我们有大约 5 秒的开销。
  • 热身请求不能保证。如果所有实例都很忙,并且调度程序认为如果它启动一个新实例而不是在繁忙的实例上排队,请求将得到更快的响应,它会这样做而不会通过预热浪费时间-要求
  • 我不认为这是冷代码路径的问题(虽然我不详细了解 java 的热点),它可能是需要首先填充的 (mem-) 缓存
  • 我不知道你所说的“不完整的预热代码”是什么意思;只需检查您的日志以查找对/_ah/warmup 的请求 - 如果有,则 warmup-requests 已启用并正在运行。
  • 将空闲实例的数量增加到超过 1 个实例标记可能无济于事。

遗憾的是,没有任何通用技巧可以避免这种情况,但您可以尝试

  • 延迟初始化代码(仅执行绝对所需的最小实例启动开销)
  • 启动后端保持(mem-)缓存热

如果您不介意成本(并且不需要为您的低容量应用程序自动扩展),您甚至可以让始终在线的后端处理所有请求

关于java - 在 GAE 中实现一致的响应时间?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15092537/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com