延迟注入 - Amazon EBS
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

延迟注入

使用 Amazon FIS 中的延迟注入操作 (aws:ebs:volume-io-latency) 来模拟 Amazon EBS 卷上增加的 I/O 延迟,以测试您的应用程序如何响应存储性能下降。此操作允许您指定要注入的延迟值以及目标卷上将受到影响的 I/O 百分比。使用 Amazon FIS,您可以使用预配置的延迟实验模板开始测试存储故障期间可能观察到的不同 I/O 延迟模式。这些模板设计为一组初始场景,您可以使用它们来向应用程序引入中断以测试弹性。它们并非旨在涵盖您的应用程序在现实世界中可能遇到的所有类型的影响。我们建议您根据应用程序的性能需求调整它们以运行多个不同的测试。您可以自定义可用模板或创建新的实验模板,以测试您的应用程序的特定需求。

预配置的延迟实验模板

Amazon EBS 通过 EBS 控制台和 Amazon FIS 场景库提供以下延迟实验模板。您可以直接在目标卷上使用这些模板来运行延迟注入实验。

  • 持续延迟 — 模拟恒定延迟。该实验使用一个延迟注入操作,总持续时间为 15 分钟。此实验模拟 50% 读取 I/O 和 100% 写入 I/O 的持续延迟:500 毫秒,持续 15 分钟。

  • 延迟增加 — 模拟逐渐增加的延迟。此实验使用五个延迟注入操作,总持续时间为 15 分钟。此实验将模拟 10% 读取 I/O 和 25% 写入 I/O 的延迟逐渐增加:50 毫秒持续 3 分钟,200 毫秒持续 3 分钟,700 毫秒持续 3 分钟,1 秒持续 3 分钟,以及 15 秒持续 3 分钟。

  • 间歇性延迟 — 模拟急剧的间歇性延迟峰值,中间有恢复期。此实验使用三个延迟注入操作,总持续时间为 15 分钟。此实验将模拟 0.1% 读取和写入 I/O 的三个延迟峰值:持续 1 分钟的 30 秒峰值、持续 2 分钟的 10 秒峰值和持续 2 分钟的 20 秒峰值。每次延迟峰值之间会有 5 分钟的恢复期。

  • 减少延迟 — 模拟逐渐减少的延迟。此实验使用五个延迟注入操作,总持续时间为 15 分钟。此实验将模拟 10% 读取 I/O 和写入 I/O 的延迟逐渐减少:20 秒持续 3 分钟,5 秒持续 3 分钟,900 毫秒持续 3 分钟,300 毫秒持续 3 分钟,以及 40 毫秒持续 3 分钟。

自定义预配置场景

您可以自定义上述预配置模板,也可以使用以下可自定义参数创建自己的新实验模板。

  • readIOPercentage — 将注入延迟的读取 I/O 操作的百分比。这是卷上所有读取 I/O 操作中将受该操作影响的百分比。

    范围:最小值 0.1%,最大值 100%

  • readIOLatencyMilliseconds — 读取 I/O 操作注入的延迟量。这是实验期间在指定百分比的读取 I/O 上观察到的延迟值。

    范围:最小 1 毫秒 (io2)/10 毫秒(非 io2),最大 60 秒

  • writeIOPercentage — 将注入延迟的写入 I/O 操作的百分比。这是卷上所有写入 I/O 操作中将受该操作影响的百分比。

    范围:最小值 0.1%,最大值 100%

  • writeIOLatencyMilliseconds — 写入 I/O 操作注入的延迟量。这是实验期间在指定百分比的写入 I/O 上观察到的延迟值。

    范围:最短 1 毫秒 (io2)/10 毫秒(非 io2),最长 60 秒

  • duration — 将在所选百分比的 I/O 上注入延迟的持续时间。

    范围:最短 1 秒,最长 12 小时

监控延迟注入

您可以通过以下方式监控对卷的性能影响:

  • 使用 CloudWatch 中的平均延迟指标来获取每分钟平均 I/O 延迟。有关更多信息,请参阅 Monitor your EBS volumes using CloudWatch

  • 使用可通过 NVMe-CLI、CloudWatch 代理和 Prometheus 获取的 EBS 详细性能统计数据来获取每秒平均 I/O 延迟。详细的指标还提供 I/O 延迟直方图,您可以使用它们来分析卷上的延迟变化。有关更多信息,请参阅 NVMe detailed performance statistics

  • 使用 Amazon EBS 卷状态检查。当您注入 I/O 延迟时,卷的状态会转换为 warning 状态。

注意事项

使用 EBS 延迟注入时,请考虑以下事项:

  • 延迟注入在所有基于 Nitro 的实例类型上均受支持,但以下类型除外:P4d、P5、P5e、Trn2u、G6、G6f、Gr6、Gr6f、M8i、M8i-flex、C8i-flex、R8i、R8i-flex、I8ge、Mac-m4pro 和 Mac-m4。

  • 实验中指定的延迟值与观察到的结果延迟值之间可能会出现高达 5% 的偏差。

  • 如果您驱动的 I/O 操作数量很少,则操作参数中指定的 I/O 百分比可能与受该操作影响的 I/O 的实际百分比不符。

在 Amazon EBS 卷上运行延迟注入实验
  1. 通过以下网址打开 Amazon EC2 控制台:https://console.aws.amazon.com/ec2/

  2. 在导航窗格中,选择 Volumes

  3. 选择要运行实验的卷,然后选择操作弹性测试注入卷 I/O 延迟

    Amazon Fault Injection Service 控制台将打开。

  4. 创建实验窗口中,选择要运行的实验类型:间歇性增加持续减少

  5. 对于 IAM 角色选择,请选择创建新角色以创建 Amazon FIS 将用于代表您进行实验的新角色。或者,如果您之前创建了具有所需权限的 IAM 角色,请选择使用现有 IAM 角色

  6. 定价估算部分提供运行实验的成本估算值。使用 Amazon FIS,您将根据实验的目标账户数量,从始至终按操作运行的每分钟付费。

  7. 请选择开始实验