

本文属于机器翻译版本。若本译文内容与英语原文存在差异，则一律以英文原文为准。

# 延迟注入
<a name="ebs-fis-latency-injection"></a>

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

**预配置的延迟实验模板**  
Amazon EBS 通过 EBS 控制台和 [AWS FIS 场景库](https://docs.aws.amazon.com/fis/latest/userguide/scenario-library-scenarios.html)提供以下延迟实验模板。您可以直接在目标卷上使用这些模板来运行延迟注入实验。
+ **持续延迟**：模拟恒定延迟。该实验使用一个延迟注入操作，总持续时间为 15 分钟。本实验模拟 50% 的读取 I/O 和 100% 的写入 I/O 的持续延迟：500 毫秒，持续 15 分钟。
+ **延迟增加**：模拟逐渐增加的延迟。此实验使用五个延迟注入操作，总持续时间为 15 分钟。本实验将模拟 10% 的读取 I/O 和 25% 的写入 I/O 时延逐渐增加：3 分钟 50 毫秒，3 分钟 200 毫秒，3 分钟 700 毫秒，3 分钟 700 毫秒，3 分钟 1 秒，3 分钟 1 秒，3 分钟 15 秒。
+ **间歇性延迟**：模拟急剧的间歇性延迟峰值，中间有恢复期。此实验使用三个延迟注入操作，总持续时间为 15 分钟。此实验将模拟 0.1% 读取和写入 I/O 的三个延迟峰值：持续 1 分钟的 30 秒峰值、持续 2 分钟的 10 秒峰值和持续 2 分钟的 20 秒峰值。每次延迟峰值之间会有 5 分钟的恢复期。
+ **减少延迟**：模拟逐渐减少的延迟。此实验使用五个延迟注入操作，总持续时间为 15 分钟。本实验将模拟10％的读 I/O 写I/O延迟逐渐降低：3分钟为20秒，3分钟为5秒，3分钟为900毫秒，3分钟为300毫秒，3分钟为300毫秒，3分钟为40毫秒。

**自定义预配置场景**

您可以自定义上述预配置模板，也可以使用以下可自定义参数创建自己的新实验模板。
+ `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 延迟。有关更多信息，请参阅[使用 CloudWatch监控您的 EBS 卷](https://docs.aws.amazon.com/ebs/latest/userguide/using_cloudwatch_ebs.html)。
+ 使用 NVMe-CLI、 CloudWatch 代理和 Prometheus 提供的 EBS 详细性能统计数据来获取每秒的平均延迟。 I/O 详细指标还提供了 I/O 延迟直方图，您可以使用这些直方图来分析交易量的延迟差异。有关更多信息，请参阅[ NVMe 详细的性能统计](https://docs.aws.amazon.com/ebs/latest/userguide/nvme-detailed-performance-stats.html)信息。
+ 使用 [Amazon EBS 卷状态检查](monitoring-volume-checks.md)。当你注入 I/O 延迟时，卷的状态会转换到`warning`状态。

**注意事项**  
使用 EBS 延迟注入时，请考虑以下事项：
+ 延迟注入在所有[基于 Nitro 的实例类型](https://docs.aws.amazon.com/ec2/latest/instancetypes/ec2-nitro-instances.html)上均受支持，但以下类型除外：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. 打开位于 [https://console.aws.amazon.com/ec2/](https://console.aws.amazon.com/ec2/) 的 Amazon EC2 控制台。

1. 在导航窗格中，选择 **Volumes**。

1. 选择要运行实验的卷，然后选择**操作**、**弹性测试**、**注入卷 I/O 延迟**。

   控制 AWS Fault Injection Service 台打开。

1. 在**创建实验**窗口中，选择要运行的实验类型：**间歇性**、**增加**、**持续**或**减少**。

1. 要**选择 IAM 角色****，请选择创建**新角色以 AWS FIS 创建用于代表您进行实验的新角色。或者，如果您之前创建了具有所需权限的 IAM 角色，请选择**使用现有 IAM 角色**。

1. **定价估算**部分提供运行实验的成本估算值。使用 AWS FIS，根据实验的目标账户数量，从头到尾每分钟向你收取操作的费用。

1. 请选择**开始实验**。