我有一个 Amazon Elastic Block Store (Amazon EBS) 卷,该卷在 Amazon CloudWatch 中尚未达到其吞吐量或每秒进行读写操作的次数 (IOPS) 限制。但是卷遭遇了节流,延迟很高,队列长度也很长。
解决方法
CloudWatch 指标有助于监控所有 Amazon EBS 卷类型的 IOPS 和吞吐量。CloudWatch 指标每隔一分钟收集一次样本。但是,I/O 操作以毫秒速率执行。当卷出现高 IOPS 或吞吐量突增的时间间隔短于收集间隔时,CloudWatch 不会捕获突增情况。出现此故障是因为指标是以每秒的速率进行监控的。
使用 CloudWatch 指标来识别可能发生的微爆情况
检查 VolumeIdleTime 指标
VolumeIdleTime 指标图表显示在指定持续时间内未提交读取或写入操作的秒数。如果 VolumeIdleTime 数值较高,则该卷将在大部分持续时间内保持空闲状态。如果过去同一持续时间段内的 IOPS 或吞吐量足够高,则表明该卷发生了微爆。
**计算 EBS 卷收到的平均吞吐量和平均 IOPS **
使用以下公式计算 EBS 卷的平均吞吐量:
以“字节/秒”为单位的估计平均吞吐量 =(总和 (VolumeReadBytes) + 总和 (VolumeWriteBytes))/(周期 - 总和 (VolumeIdleTime))
使用以下公式计算 EBS 卷的平均 IOPS:
以“操作次数/秒”为单位的估计平均 IOPS =(总和 (VolumeReadOps) + 总和 (VolumeWriteOps))/(周期 - 总和 (VolumeIdleTime))
使用 CloudWatch 获取微爆事件
完成下面的步骤:
- 打开 CloudWatch 控制台。
- 选择 All Metrics(全部指标)。
- 使用卷 ID 搜索发生过微爆的卷。
- 选择 EBS,然后选择 Per-Volume Metrics(每个卷的指标)。
- 要查看吞吐量指标,请选择 VolumeReadBytes、VolumeWriteBytes 和VolumeIdleTime。
- 选择 Graphed metrics(绘成图表的指标)。
- 在 Statistics(统计数据)中选择 Sum(总和),在 Period(周期)中选择 1 minute(1 分钟)。
- 对于 Add Math(添加数学),选择 Start with empty expression(从空表达式开始)。
- 要了解 Expression(表达式)的 Details(详细信息),请使用为 VolumeReadBytes、VolumeWriteBytes、VolumeIdleBytes 分配的图形 ID。这将构建以“字节/秒”为单位的估计平均吞吐量公式。
例如,(m1+m2)/(60-m3)。
如果图表显示的值大于卷的最大吞吐量,则工作负载处于微爆状态。
要检查是否存在由于 I/O 操作导致的微爆,请按照前面的步骤进行操作。然后在步骤 5 中,将 VolumeReadBytes、VolumeWriteBytes 和 VolumeIdleTime 替换为 VolumeReadOps、VolumeWriteOps 和 VolumeIdleTime。
使用操作系统级工具确认微爆
即使处于繁忙状态(VolumeIdleTime 较低),EBS 卷也可能出现微爆。对于 VolumeIdleTime 较低的卷,可以精细收集样本的操作系统级工具能够更有效地识别工作负载是否发生了微爆。
Linux
要以秒级粒度报告所有挂载卷的 I/O 统计信息,请运行 iostat 命令:
iostat -xdmzt 1
有关详细信息,请参阅 Linux 手册页网站上的 iostat(1)。
**注意:**iostat 工具是 sysstat 软件包的一部分。如果找不到 iostat 命令,请运行以下命令,在 Amazon Linux 应用程序机器映像 (AMI) 上安装 sysstat:
sudo yum install sysstat -y
要确定是否达到吞吐量限制,请查看输出中的 rMBps 和 wMBps。如果 rMBps + wMBps 大于卷的最大吞吐量,则卷会发生微爆。
要确定您是否达到 IOPS 限制,请查看输出中的 rps 和 wps。如果 rps + wps 大于卷的最大 IOPS,则卷正在发生微爆。
Windows
在 Windows 性能监视器中运行 perfmon 命令。有关详细信息,请参阅确定您的 IOPS 和吞吐量要求。
根据应用程序的需求更改卷大小或类型,以防发生微爆
微爆可能会导致应用程序中出现 I/O 限制或 I/O 延迟。为防止出现这种情况,请修改卷的类型和大小,使其符合您所需的 IOPS 和吞吐量要求,即使其处于微爆级别。有关详细信息,请参阅 Amazon EBS 卷类型。实例可以向所有已连接的 EBS 卷推送的 IOPS 和吞吐量有一定限制。
最佳做法是根据工作负载对您的卷进行基准测试,以验证哪些卷类型可以在测试环境中安全地容纳您的工作负载。有关详细信息,请参阅对 Amazon EBS 卷进行基准测试。