如何对 Amazon RDS 数据库实例中的写入延迟峰值进行问题排查?

2 分钟阅读
0

我想对我的 Amazon Relational Database Service(Amazon RDS)数据库实例中的写入延迟峰值进行问题排查。

简短描述

Amazon CloudWatch 指标 WriteLatency 定义了每个磁盘 I/O 操作所用的平均时间。理想情况下,写入延迟不得超过一位数毫秒。

执行以下操作可能会导致数据库实例的写入延迟峰值:

峰值也可能是由数据库工作负载繁重导致的 IOPS 或吞吐量瓶颈造成的。

解决方法

延迟峰值问题排查

1.    要对数据库实例读取或写入延迟较高的原因进行问题排查,请检查以下 CloudWatch 指标:

  • ReadLatency 和 WriteLatency
  • ReadIOPS 和 WriteIOPS
  • ReadThroughput 和 WriteThroughput
  • DiskQueueDepth
  • BurstBalance(用于 gp2 存储)

假设您注意到以下一种或多种情况:

  • 延迟值很高。
  • 吞吐量和 IOPS 值已达到其最大限制。
  • DiskQueueDepth 的值很高。
  • BurstBalance 的值很低(对于 gp2)。

这意味着您的 RDS 实例处于繁重的工作负载下,需要更多资源。有关更多信息,请参阅如何排查 Amazon RDS 实例中由 IOPS 瓶颈导致的 Amazon EBS 卷延迟问题?

要对导致 IOPS 或吞吐量瓶颈的问题进行问题排查,请执行以下操作:

对于具有通用型 SSD(gp2)的 RDS 实例,请检查数据库实例的类和存储大小。

对于具有预调配 IOPS(io1)的 RDS 实例,请检查数据库实例的类和定义的预调配 IOPS。

有关更多信息,请参阅数据库实例的类Amazon EBS 优化实例

2.    如果 CloudWatch 指标未显示任何资源节流,请使用增强监控检查读取 IO/S 和写入 IO/S。

CloudWatch 指标的记录间隔为 60 秒。因此,可能不会记录每一次峰值或跌落。但是,您可以将增强监控的粒度设置为最多一秒钟以捕获数据。增强监控可以捕获 60 秒间隔内的任何资源利用率峰值。有关更多信息,请参阅如何确定 EBS 卷中出现微爆发,如何防止这种情况发生?

3.    如果前面的所有检查都没有指出问题的原因,请检查 CloudWatch 指标 NetworkReceiveThroughputNetworkTransmitThroughput,以确保网络没有问题。

减轻延迟加载的影响

从快照恢复 RDS 数据库实例时,该数据库实例将继续在后台加载数据。此过程称为延迟加载。

延迟加载可能发生在需要从快照恢复的所有情形中,例如时间点恢复、将单可用区实例转换为多可用区实例以及创建新的只读副本。如果您尝试访问尚未加载的数据,数据库实例会立即从 Amazon Simple Storage Service(Amazon S3)下载请求的数据。然后,实例继续在后台加载其余数据。有关更多信息,请参阅 Amazon EBS 快照。为了减轻延迟加载对需要快速访问的表的影响,您可以执行涉及全表扫描的操作,例如 SELECT *。这允许 RDS 从 Amazon S3 下载所有备份的表数据。

遵循最佳实践

在处理数据库实例中的高写入延迟时,请牢记以下最佳实践和解决方法:

  • 确保为数据库分配了足够的资源来运行查询。使用 RDS 时,分配的资源量取决于实例类型。
  • 如果 CloudWatch 指标和增强监控指标均未显示资源节流,则使用 Performance Insights 监控数据库工作负载。使用 Performance Insights,当您的应用程序出现延迟时,您可以识别数据库中运行的基础 SQL 查询。您可以使用此信息来评估数据库的负载并确定进一步的操作。有关更多信息,请参阅使用 Amazon RDS 上的 Performance Insights 监控数据库负载
  • 根据您的使用案例更改 Amazon EBS 卷的大小或类型,防止出现微爆发。
  • 要优化数据库性能,请确保正确调整查询
  • 如果您要将单可用区数据库实例转换为多可用区实例,请考虑在非工作时间进行转换。
  • 要减少多可用区转换后延迟加载的影响,请考虑执行以下任意一项操作:
  • 转换为多可用区实例后立即执行手动失效转移。
  • 运行完全转储或仅运行必需的查询,以加载表中的所有数据。此过程有助于加载数据并强制将所有数据块从 S3 推送到新主机。对于 Amazon RDS for PostgreSQL 实例,您可以运行 pg_prewarm 命令。
  • 您可以针对 RDS 关键指标配置 Amazon CloudWatch 警报,这些警报可用于确定 RDS 实例中写入延迟峰值的原因。这些指标的示例包括 ReadIOPS、WriteIOPS、ReadThroughput、WriteThroughput、DiskQueueDepth、ReadLatency 和 WriteLatency。您可以使用这些警报来确保实例不会出现节流。

相关信息

Amazon RDS 最佳实践

了解 Amazon RDS 和 GP2 的爆发和基准性能

将数据库实例修改为多可用区数据库实例部署

教程:从数据库快照恢复 Amazon RDS 数据库实例

AWS 官方
AWS 官方已更新 2 年前