【问题标题】:Is app engine more expensive when it's slower?当应用程序引擎速度较慢时,它会更昂贵吗?
【发布时间】:2010-08-11 22:07:18
【问题描述】:

最近有不少情况下,应用引擎似乎运行缓慢。在某种程度上,这对于他们的云平台架构是可以理解的。我不是在谈论新的服务器实例——只是对暖服务器的请求。我也只是指 CPU,而不是数据存储 API,但我也对此感到疑惑。

似乎在这些缓慢的时期内,我的请求收到了更多黄色警告 - 说我正在使用大量 CPU。当然,在此期间它们需要更长的时间才能完成。让我担心的是,在这些缓慢的时期,我的 计费 CPU 似乎上升了。

所以要明确一点 - 当应用引擎速度很快时,请求可能会在 100 毫秒内完成。在较慢的时间内,同一请求可能需要超过 1 秒的时间。相同的 URI、相同的缓存、相同的处理路径、相同的数据存储、相同的索引 - 更多的 CPU。据我了解,黄色警告是指可计费的 CPU 使用率,当应用引擎速度较慢时还会出现更多警告。

这似乎设置了一个奇怪的情况,当应用引擎性能更差时,我的应用运行成本更高。这意味着谷歌平台表现越差,谷歌赚的钱就越多(直到它失败或客户离开的地步)。也许我的情况完全错了,它不会那样工作 - 但如果它确实那样工作,那么作为客户,那里的压力和平衡都是错误的。这并没有暗示谷歌有任何不当行为——只是这两件事之间的关系似乎不正确。

Google 的算法似乎是这样的——“如果我给 CPU 一个处理工作并启动我的手表,然后在工作返回时停止它,我会得到可计费的 CPU 数字。”即它根本不测量 CPU 工作。当然,该时间应该除以并发执行的处理作业的数量加上一些额外的时间来覆盖额外的上下文切换。我确信这些东西很难衡量——也许这就是原因。

我想您可能会争辩说,当应用引擎需求量很大时您支付更多费用是公平的,但这使得预算几乎不可能 - 您无法生成像“100 个用户每天花费我 1 美元”这样的统计数据,因为那可能会因多种原因而发生变化——包括应用引擎加入的客户数量超过了基础设施实际处理的数量。如果谷歌超额订阅应用程序引擎,那么所有客户都会支付更多费用 - 这是另一种听起来不正确的关系。当然,Google 的成本应该会下降,因为他们会吸引更多的客户,而这些客户会使用更多的资源 - 基于规模经济。

我是否应该期望我的应用程序中的两个相同请求每次运行时花费大致相同的金额 - 无论应用程序引擎实际完成它们需要多少时间?我是否误解了这是如何工作的?如果我没有,我是否有理由长期不担心它?是否有一些文件可以使这种情况更清楚?干杯,

科林

【问题讨论】:

  • 对我来说似乎是一个公平的问题。我可以报告说我看到了同样的事情,尽管性能范围要广得多。他们确实尝试通过关闭数据存储时间计费来弥补这一点,但最近又重新启用了。
  • Google 应该测量 CPU 时间而不是挂钟时间。也许这对他们的基础设施来说很难做到。
  • 同意 - Greg 的回答下方的 cmets 中有一些建议似乎代表了该问题的合理解决方案。
  • 不可能有正确的答案,除了谷歌,谁知道实际发生了什么。但我会说,如果他们真的错过了这么大的一点,那真是一个愚蠢的错误。可能是应用程序缓存和 ALSO 模块缓存的情况。他们可能会不时卸载模块(尤其是像他们自己版本的 python 中的 django 那样很重),这会导致上述时间范围的变化。
  • 一般情况下,当这种情况发生时,所有请求的返回速度会更慢(挂钟时间),这表明应用引擎的负载增加,而不是特定请求执行了额外的工作不定期的。在这种所有请求的一般响应时间较长的情况下,它对应于大多数请求的 CPU 成本增加。这不是一个偶然的请求,而是一个反复出现的模式。我同意谷歌的某个人很可能能够阐明这个问题。

标签: google-app-engine


【解决方案1】:

这会更复杂,但他们可以将计费算法更改为负载的函数。或者他们可以根据过去类似调用的性能对 CPU 测量值进行标准化。

我同意这会给开发人员带来问题。

【讨论】:

  • 同意 - 他们也可以有一套标准的请求,供他们自己使用。确定这些请求的标准 CPU 使用量是多少,然后定期运行它们。如果结果是正常的 2 倍,则将每个人的可计费 CPU 除以 2。考虑到他们产品的规模,如果他们选择一组有代表性的标准请求,这应该在统计上相当平均。真的不明白为什么这个解决方案很难实施(我认为这大致就是你所说的)。谢谢。
  • 我猜反之亦然,如果应用引擎运行得特别快,那么增加每个人的 CPU 测量值。鉴于谷歌声明免费配额是基于服务 x 百万个请求,令人惊讶的是他们没有使用这种方法来规范一切。
  • 我知道 GAE 工程师为他们的平台感到非常自豪,并且正在努力解决这个问题。但我无法抗拒......当然具有讽刺意味的是,“您可能已经听说在谷歌这里我们痴迷于速度”以及谷歌现在在他们的排名算法中使用网站速度的事实。我想知道他们是否会妨碍在 GAE 上运行的网站。 :) 抱歉,无法抗拒。
【解决方案2】:

是的,这是真的。这是一个无赖。每次他们认为我的网站需求量低且不需要资源时,他们也需要一秒钟多的时间来启动我的 Java 应用程序(我为此付费)。

我最终使用 cron 每分钟自动 ping 我的网站以使其保持温暖。完成所有浪费的工作使我的账单更便宜,因为它没有启动时间,而是只有很多 2 毫秒的 ping ...

【讨论】:

  • 了解重新。冷启动 - 在顶部指出,我只是指暖服务器。只是对性能与成本的问题感兴趣——不想让这成为许多其他抱怨的话题。您是否确定 google 已将应用引擎设置为在速度较慢时更昂贵,还是您只是像我一样参考轶事观察?塔。
【解决方案3】:

这个问题似乎很老了,我认为定价方案一定已经改变了......

instance hours”的 Google App Engine 费用和当前生成的实例可在 GAE 控制台中查看。 Google 会提供调整,以便您决定应用的成本与延迟。

https://developers.google.com/appengine/docs/adminconsole/performancesettings

我确实注意到,如果前端在访问公共后端资源时陷入困境,GAE 将生成大量实例以降低延迟。即使延迟/吞吐量没有改善,您也会为这些实例时间付费。我提到的调整似乎对此有所帮助。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-05-17
    • 1970-01-01
    • 2011-01-09
    • 2014-09-28
    • 2010-10-12
    • 2016-08-31
    • 1970-01-01
    相关资源
    最近更新 更多