【问题标题】:Single node Cloud Spanner instance exhibiting poor performance单节点 Cloud Spanner 实例表现不佳
【发布时间】:2019-10-04 16:29:22
【问题描述】:

我们一直在使用具有三个节点的 Cloud Spanner 并获得了良好的性能

9,010 mutations
in 0.168 seconds
across 106 rows and 85 columns
or 53,630 mutations per second

由于我们仍在开发中,我们决定使用一个单个节点,以节省开发成本。不幸的是,我们的表现非常糟糕。远低于简单地将上述内容减少 66%。我们看到了

85 mutations mutation
in 1.7 seconds
across 1 row and 85 columns
or 50 mutations per second

我们从每秒大约 53,630 个突变增加到每秒 50 个突变。 性能下降超过 1/1000,而不是预测的 1/3。

我们没有改变一行代码,只是改变了节点的数量。对于从 3 个 Cloud Spanner 节点变为 1 个 Cloud Spanner 节点时为什么会出现如此缓慢的速度,是否有人有任何建议或想法?

编辑:为了清楚起见,我们正在使用批量插入,当我们从 3 个实例“减少”到 1 个时,我们删除了节点并从 1 个重新开始。

编辑:更正语义(“节点”而不是“实例”)

【问题讨论】:

  • Spanner 有一节介绍如何调试:cloud.google.com/spanner/docs/…
  • 嘿@TravisWebb 感谢您的链接!我们已经浏览了提供的页面,该页面与解决性能不佳的查询更相关,而不是将实例减少到 1 个。我们对 3 个实例运行了与对 1 个实例相同的查询,但没有看到性能的可扩展性正如预期的那样。如果我忽略了什么,请告诉我。
  • 9K 突变在 0.16 秒内跨越 106 行?这似乎……不太可能。你是怎么测试的?每次/提交批处理了多少突变;有多少线程?请注意,扳手提交延迟大约为 15 毫秒,因此每行 50 次提交/秒感觉正常
  • 只是添加,要真正加载测试 Spanner,您需要一个大型数据集(数千行)并运行 O(小时)的负载测试,以便 Spanner 拆分数据,以便多个节点正在使用中。
  • @RedPandaCurios 抱歉,我更新了这个问题。我们正在使用批量插入来执行所有这些操作。我们通过插入对 3 实例设置和 1 实例设置使用相同的代码来测试这一点,使用日期时间进行多次测量并平均所有测量值。

标签: database performance google-cloud-platform google-cloud-spanner


【解决方案1】:

GCP 解决了 this issue 中的问题。复制相关部分以防 URL 出现故障:

对于 Cloud Spanner 来说,将节点数量从 3 个减少到 1 个是相当激进的(相当于 300 到 100 个)。该产品提供高可用性,数据在不同区域复制。所以在后台发生的事情是所有副本的所有数据都必须在后台重组到 1 个节点。这是一个相对较大的操作,应该需要一些时间。后台操作完成后,性能应该会恢复到预期水平。

【讨论】:

    【解决方案2】:

    (促进评论回答)。

    我假设此时 Spanner 实例监控统计数据(CPU、读写 QPS)较低,因此该实例没有过载...

    您可以尝试在一个新的、干净的实例上运行相同的测试,看看是否只是您的实例有问题。可能是在缩小规模后,它需要做一些家务。在不知道您的架构、行数和正在执行的操作的情况下,很难判断。

    另一方面,您可以在 Stackdriver 中检查 Spanner API 的 RPC 延迟监控统计信息,以了解延迟的确切位置(尽管它最有可能在 Commit 中)。

    【讨论】:

      猜你喜欢
      • 2018-06-19
      • 2018-02-25
      • 2021-05-21
      • 2018-02-23
      • 2017-07-07
      • 1970-01-01
      • 2021-12-10
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多