我的 Cloud Spanner 数据库中收到延迟峰值警报。我该如何调试它?

问题描述 投票:0回答:1

我使用 Cloud Spanner 作为我的应用程序的数据库。对于某些查询,延迟会激增。我想知道如何调试?

我尝试查看系统见解页面,但无法将其与我的应用程序中发生的情况关联起来。

latency google-cloud-spanner observability
1个回答
0
投票

系统洞察页面有很多有用的信息。检查有问题的实例。通常,高延迟是由以下原因引起的:

  1. 配置不足的实例:对于高优先级 CPU,Cloud Spanner 建议单区域设置的 CPU 利用率阈值为 65%,多区域设置的 CPU 利用率阈值为 45%。如果 CPU 利用率是由用户或系统负载引起的,请首先进行调试。如果 CPU 利用率持续高于建议的 Cloud Spanner 阈值,第一个操作是增加节点数量。这有助于在节点之间分配流量,从而使 Cloud Spanner 能够提供更好的延迟。如果由于资源限制,添加更多节点会降低延迟。
  2. 昂贵/低效的查询:在数据库上运行的昂贵/低效的查询可能会导致更高的延迟。检查“查询见解”仪表板以查看最昂贵的查询并选择一个昂贵的查询,并查看“查询详细信息”仪表板上扫描的行与返回的行的比率是否较高。如果是这种情况,也许可以进一步优化查询。此外,查询详细信息页面还显示采样查询计划,它存储查询计划的历史记录,并可以帮助找出导致查询延迟较高的原因。
  3. 锁争用:System Insights 中的锁等待时间图表显示了实例/数据库所花费的锁等待时间。较长的锁定等待时间意味着请求的延迟较高。为了保证多个并发事务的一致性,Spanner使用锁来控制对数据的访问。当许多事务需要频繁访问同一锁时,就会发生锁争用,导致读写延迟较高。可以使用锁和事务洞察来调试锁争用。
  4. 热点:检查数据库中是否存在热点,可以使用 Key Visualiser 进行验证。如果确实存在热点,请参考架构设计最佳实践来避免它们。
  5. 大型交易:具有许多参与者(分裂)的大型交易可能会导致更高的延迟。需要从事务中的参与者处读取和写入数据,因此较高的参与者数量将意味着更多的网络协调开销,并且在同一事务中将完成更多的处理。交易的参与者数量可以在交易洞察的交易详细信息页面中找到。

由于客户端的会话配置错误,请求的进一步延迟可能会很高。客户端库使用会话在云扳手上运行查询和会话配置错误

© www.soinside.com 2019 - 2024. All rights reserved.