【问题标题】:Why is disk IO on my new AWS EC2 instance so much slower?为什么我的新 AWS EC2 实例上的磁盘 IO 这么慢?
【发布时间】:2020-06-05 20:45:57
【问题描述】:

我有一个常规的 EC2 实例 A,它有一个 200GB 的 SSD,里面装满了数据。我使用该磁盘创建了一个 AMI,并使用该 AMI 启动了另一个具有相同规格的 EC2 实例B

B 几乎立即启动,这让我感到惊讶,因为我认为 AWS 将我的 200GB EBS 复制到与新实例对应的 SSD 时会有延迟。但是我注意到B 上的 IO 非常慢。解析 B 上的数据需要 3 倍的时间。

为什么会这样,我该如何克服?对于需要快速磁盘 IO 的应用程序来说,它太慢了。

【问题讨论】:

  • 您能否为您的 EC2 实例 A 和 B 添加 EC2 实例配置详细信息?

标签: amazon-web-services amazon-ec2 disk amazon-ami disk-io


【解决方案1】:

发生这种情况是因为新创建的 EBS 卷 is built from S3 on-demand:当 EC2 第一次从该卷中读取一个块时,它会从 S3 中检索。加载所有块后,您才能获得“完整”的 EBS 性能。顺便说一句,对于从快照恢复的大型数据库来说,这是一个大问题。

一个解决方案可能是fast snapshot restore。尽管文档没有描述幕后发生的事情,但我的猜测是他们从现有的 EBS 映像中进行了并行磁盘复制。但是,您需要为每个快照支付每小时 0.75 美元的费用,并且限制为每小时 10 次恢复。

鉴于您在另一个问题中描述的用例,我认为最好的解决方案是保留您为工作启动和停止的按需实例。假设您使用的是 Linux,则按秒收费,因此如果您每小时只运行 10-20 分钟,您将按比例支付费用。而且与现场实例不同,您会知道机器将始终可用并且始终能够完成工作。

另一种选择是让 Spot 实例继续运行。如果您每小时的大部分时间都在运行,那么关闭实例并不能真正节省那么多。

【讨论】:

  • 是否可以使用我已预加载所有数据的 gp SSD 创建 EC2 现货实例?因此,与需要从 S3 传输的 AMI 不同,数据可以立即在本地使用?
  • 您可以预构建一个 EBS 卷,在启动后附加到实例。您可以将卷 ID 传递给用户数据中的实例,并拥有一个附加和挂载它的脚本。
  • 我知道这可以通过常规 EC2 实例完成,但也可以通过 Spot 实例完成吗?与使用大型 AMI 创建时不同,磁盘 IO 在启动后会立即快速吗?
猜你喜欢
  • 2015-07-12
  • 1970-01-01
  • 2021-07-27
  • 2018-04-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-01-30
  • 1970-01-01
相关资源
最近更新 更多