【问题标题】:App Engine app performance testApp Engine 应用性能测试
【发布时间】:2012-03-30 14:28:20
【问题描述】:

我使用 jMeter 来测试我的 appengine 应用程序的性能。

我创建了一个线程组

  • 500 个用户,
  • 加速周期:0 秒
  • 然后循环到 1

并运行测试。

它在应用引擎中创建了 4 个实例。但有趣的是,>单个实例处理了 450 个请求。

我已经在这个实例上再次运行了测试,大部分请求(> 90%)仍然发送到同一个实例

  • 实例类型:F1 类
  • 最大空闲实例数:(自动)
  • 最小等待延迟:(自动)

我的延迟越来越高。
这里出了什么问题? 从 1 个 IP 产生负载,有什么问题吗?

【问题讨论】:

    标签: java google-app-engine jmeter performance-testing


    【解决方案1】:

    您的问题是您没有使用实际的提升值。与大多数自动缩放解决方案一样,AppEngine 需要合理的时间来启动新硬件。在此过程中在创建新实例时如果流量突然大幅增加,延迟可能会增加。

    选择一个代表您实际期望在生产中看到的那种尖峰/浪涌的上升值,然后运行测试。使用此测试中的值来确定您希望“始终在线”的 appEngine 实例数,该值越高,激增的影响越小,但显然您的成本越高。

    【讨论】:

    • 我指定了,我用这个实例(4 个实例)再次运行测试,但大多数请求(> 90%)仍然指向同一个实例。并给我错误和高延迟值
    • 您可能想从另一个方向来解决这个问题:如果您在部署此应用程序后计算出您期望获得的最高峰,那么您可以配置您的测试来代表它。基本上(根据我的经验),appEngine 不是一个很好的解决方案,适用于大容量、非常手术的应用程序,而且它(根本)不是设计来与激进的合成负载测试一起工作的。笔记。 Google 很有可能正在使用某种状态检查来决定如何平衡负载,这可能基于一个时间间隔,因此您需要慢慢提升...
    【解决方案2】:

    当您说“我的延迟越来越高”时,您到底得到了什么?你觉得它太慢了吗?

    如果延迟是一个问题,那么您可以在应用程序设置中减少最大等待延迟。如果您尝试这样做,我想您会看到您的请求更多地分布在实例中。

    我的猜测只是 2-3 个空闲实例在预期负载增加的情况下启动,但实际上并不需要您的测试。

    【讨论】:

    • 对于那个特定的测试,我的平均延迟约为。 10 秒。在正常情况下(不使用 jmeter 压力测试),它平均约为 50 毫秒。如果这些请求跨越多个实例,我可能会得到更好的结果。我会尝试你的解决方案。并让你知道。谢谢。
    • 我仍然有一个疑问,为什么第二个测试也使用相同的实例来运行,并且给了我更高的延迟。!!!他们中只有少数人使用了其他人。
    • 实例数量增加,分布略有变化,延迟值仍然很高。!
    【解决方案3】:

    这完全是应用引擎的问题...

    see this issue reported at appengine's issue tracker

    【讨论】:

    • 这个答案没有正确的解释。连链接都有权限问题。
    【解决方案4】:

    将您的请求分散到不同的线程组中,这些实例将被使用。我不确定为什么会这样。我无法找到任何明确的信息来解释这一点。

    (我想知道 App Engine 是否可能会将来自单个线程组的请求视为源自共同来源的请求,因此它将所有使用的资源放在同一个实例中,以便可以最有效地将输出传递回请求的发起者。)

    【讨论】:

      猜你喜欢
      • 2013-07-11
      • 1970-01-01
      • 2011-02-07
      • 2014-03-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-12-31
      • 1970-01-01
      相关资源
      最近更新 更多