【问题标题】:Sustainable Query Per Seconds [QPS] without incurring in timeout errors每秒可持续查询 [QPS] 不会产生超时错误
【发布时间】:2011-06-13 02:22:03
【问题描述】:

您知道哪个是最安全Queries Per Second 更新单个实体而不引起写入争用的速率吗?
阅读this关于分片的文档清楚地说:

请务必注意,您可以 只希望更新任何一个 约五个的实体或实体组 每秒次。这是一个估计 和一个实际的更新率 实体依赖于几个 实体的属性,包括 它有多少属性,有多大 是的,需要多少索引 更新。

我有timeout problem,即使每秒更新一次,this 答案中的评论让我感到困惑:

你仍然可以得到写争用 个别实体,如果你正在做 超过大约 1QPS 的修改 给他们

我错过了什么吗?
如果我什至不能每秒更新一个实体而不发生超时错误,我的 GAE 应用程序如何扩展?

【问题讨论】:

  • 我不知道是每秒 5 次更新还是每秒 1 次更新是安全数。但在任何一种情况下,该费率都是针对 1 个实体,而不是您的整个应用程序。所以你的应用仍然可以很好地扩展——你可以每秒更新一百个不同的实体,为一百个不同的用户提供服务。 App Engine 专注于为网络应用提供服务,这些应用通常需要水平扩展,而不是垂直扩展。
  • @Peter 很公平,我仍然不明白怎么可能让每秒更新实体 1 次的超时。
  • 如果您在这里没有得到答案,您可以尝试在下一次 IRC 聊天中提问。
  • 1 QPS 数字是否来自引用新的高复制数据存储的文章?据说在该系统上写入需要更长的时间。

标签: google-app-engine timeout google-cloud-datastore contention


【解决方案1】:

差异的原因是因为这不是硬性限制。如果您对实体组执行 1 QPS 更新,您可能根本不会注意到超时或延迟有任何显着增加。如果您执行 5 QPS,您可能会看到超时率增加,并且延迟明显增加。除此之外,争用问题会变得更糟。

通常,我将 1 QPS 视为构建的设计目标,为尖峰提供合理的误差范围。

【讨论】:

  • 谢谢,我认为您 (Google) 应该将该分片文章更新为更正确的 1 QPS。正如在另一个问题中所说,我已将更新单个实体的任务队列的速率调整为每秒 1 个任务;我仍然遇到一些超时错误。即使实体每秒仅更新 1 次,实体上的大量读取是否会增加超时的可能性?
  • 读取不会增加超时;不过,在任何级别的写入中,都会出现一些少量的超时。您看到大约多少百分比的写入超时?
  • 在任何级别的写入中都会出现少量的超时,这可以解释一切。我每天有 1 到 5 次超时,但是写入次数 > 2000,所以这是一个很小的百分比。我只是认为将更新速率降低到每秒 1 个任务可以让我保持日志干净;感谢您的澄清。
猜你喜欢
  • 1970-01-01
  • 2021-10-18
  • 2014-04-23
  • 2012-08-22
  • 1970-01-01
  • 2021-11-15
  • 1970-01-01
  • 1970-01-01
  • 2019-01-08
相关资源
最近更新 更多