【问题标题】:What does IOPS (in Amazon EBS) mean in practice?IOPS(在 Amazon EBS 中)在实践中意味着什么?
【发布时间】:2016-05-05 18:48:40
【问题描述】:

我有一些应用需要的图片。有很多图像(50,000+),但整体大小很小(40 Mb)。最初,我以为我会简单地使用 S3,但上传速度非常慢。作为临时解决方案,我想附加一个包含图像的 EBS,这样就可以了。但是,阅读了一些关于 EBS 通用 (gp2) 的信息后,我注意到了以下描述:

GP2 是 Amazon EC2 实例的默认 EBS 卷类型。这些 卷由固态驱动器 (SSD) 提供支持,适用于 广泛的事务性工作负载,包括开发/测试 环境、低延迟交互式应用程序和引导卷。 GP2 旨在提供个位数毫秒的延迟,提供 3 IOPS/GB 到最大 10,000 的一致基准性能 IOPS,每卷提供高达 160 MB/s 的吞吐量。

让我担心的是 3 IOPS/GB 的数量。这实际上意味着什么?假设您需要一个面向少量用户的电子商务网站(例如每分钟 describes IOPS 是如何测量的:

当小型 I/O 操作在物理上是连续的时,Amazon EBS 尝试将它们合并到单个 I/O 中,直到最大大小。为了 例如,对于 SSD 卷,单个 1,024 KiB I/O 操作将被计算在内 4 个操作,而 4 KiB 的 256 个 I/O 操作将被视为 256 次操作。

这是否真的意味着如果我想在一秒钟内检索 50 张 10kB 的图像,我需要 50 IOPS 并且很容易超过 3 IOPS 的基线?

更新

感谢 Mark B 的建议,我能够使用 S3 上传我的文件。但是,我仍然想知道执行常见任务(例如运行数据库或为 Web 应用程序提供其他文件)所需的 IOPS 量。我很高兴根据您的经验听到一些关于 IOPS 最小值的参考值。

【问题讨论】:

  • 我发现这个 AWS 演讲 youtube.com/watch?v=OuyUbvtgfDk 对于了解 EBS 性能的工作原理非常有用
  • @Vorsprung 太好了。我会看看。谢谢。

标签: amazon-web-services amazon-s3


【解决方案1】:

您缺少该声明的“/GB”部分。基准是每 GB 3 IOPS。如果您的 EBS 卷为 100GB,那么您的基线将为 300 IOPS。对于 GP2 EBS 卷,您必须将卷大小乘以 3 才能获得 IOPS。

请注意,任何低于 1TB 的 GP2 卷也能够以高达 3,000 IOPS 的速度突增,因此任何有限的 IO 增加仍应表现良好。


此外,我还要补充一点,S3 听起来更适合您的用例。如果您看到 S3 的上传速度很慢,这是一个可以解决的问题。您可以使用 CloudFront 提供可以上传到的附近边缘位置。

根据我的经验,上传到 S3 永远不会比上传到 EBS 卷将附加到的 EC2 实例慢。


更新:

要回答您的其他问题,所需的最低 IOPS 将取决于许多变量,例如可用 RAM 的数量、您正在运行的应用程序的类型、应用程序在内存中缓存值的程度、您的 IO 操作的平均大小等等。很难确定一个确切的数字并声明您需要为应用程序提供 X IOPS。

您还需要记住,任何大小低于 1TB 的卷仍然可以在几秒钟内突增至 3,000 IOPS。因此,即使您的应用程序在使用时需要高 IOPS,但如果它没有看到太多使用情况,那么 IOPS 突发功能可能就是它所需要的全部。

一般来说,我通常从 100GB 卷和 300 IOPS 之类的东西开始,然后测试我的应用程序的性能。完全在 RAM 中运行的 Web 服务器可能永远不需要更多。对于像数据库这样的东西,您可能会从您认为需要的磁盘空间量开始,然后开始性能测试。 CloudWatch 将显示您的应用程序正在使用的 IOPS 量,如果您看到它在您的容量限制下达到最大值,那么您将知道您需要增加可用的 IOPS。冲洗并重复,直到您在性能测试期间不再最大化可用 IOPS。

【讨论】:

  • 不幸的是,正如我所说,所有图像的大小都不大于 50 兆字节,所以我不想使用更大的磁盘(也许我应该)。因此,我的问题假设一个荒谬的 1GB EBS 卷。但是,您触及了另一个重要点。在什么条件下我可以达到 3,0000 IOPS?不过,我相信有信用额度。是的,当然 S3 仍然是我的首选,但我想知道每 GB 3 IOPS。顺便说一下,我认为速度慢是由于我的上传速度慢和小文件量大。
  • 将如此少量的图像上传到 S3 应该非常快。而且我看不出您上传到 EC2 实例的计划会如何提高上传速度。
  • 因为图片可以从其他服务器获取,所以可以快速wget解压。
  • 既然你说上传图片到S3应该非常快,我用命令行界面试了一下,肯定快多了。我想这需要20分钟。谢谢!
  • @RobertSmith 根据您的扩​​展问题,我在回答中添加了更多信息。
【解决方案2】:

@Mark B 的回答可能是正确的,因为它指出您的 IOP 是基于您的 EBS 卷的大小。对于您想要的,S3 是最佳选择。

但根据您的用例和要求,可能需要 EBS。如果您想运行数据库,则尤其如此。在这种情况下,您有几个选择。

您可以获得预置 IOPS - 如果您知道需要 5000 IOPS,但只需要 100GB 的存储空间(gp2 通常可以为您提供大约 300 IOPS),则可以使用 io1 卷。这需要额外的费用,并且您需要确保它附加到 EBS 优化实例,但如果需要,您可以获得高达 20k 的 IOPS。

如果您正在执行大量顺序读取(读取大型数据集?),那么有一种新型 EBS,st1。这对于 500MB/s 来说是不错的,并且不到 gp2 成本的 1/2。

最后,您还可以考虑另一种情况(例如,您有点疯狂,想尝试做一些奇怪的事情)。如果您可以从某个地方获取存档,并且您所关心的只是从一个非常快速的文件系统提供它们,那么您可以将它们放在具有实例存储的实例上。这是一个本地连接的 SSD,所以速度非常快。唯一的缺点是当您的实例停止时,您的数据就消失了。

要解决您的更新,“数据库需要多少 IOPS”,答案是“视情况而定”。每个数据库引擎都有不同的要求,每个数据库使用都有不同的使用模式。如果您想了解更多信息,请查看this。但基本上,测试和监控。如果您担心,请在发布时过度配置,并根据需要缩减规模。或者猜测一下,如果遇到问题就增加 - 是降低成本更重要,还是为最终用户提供良好的性能更重要?

【讨论】:

  • 谢谢。我认为在这种情况下,S3 仍然是最好的选择,但是您关于大型数据库的建议正是我所需要的。你能解决我的问题中的更新吗?问题是我不确定我需要多少 IOPS,所以我想根据以前的经验获得参考值。
【解决方案3】:

根据您的用例,s3 是一个更好的选择,但如果想使用 EBS 卷并认为他们需要更多 IOPS,他们可以选择 gp3 卷类型而不是 gp2。在 gp3 卷中,可以将 IOPS 提高到 16,000,而与吞吐量无关(此外,吞吐量可以提高到 1000 MiB/s,而与 IOPS 无关)。

【讨论】:

    【解决方案4】:

    通用型 SSD (gp2) 卷提供经济高效的存储,非常适合各种工作负载。这些卷提供个位数毫秒的延迟,并能够在较长时间内突增至 3,000 IOPS。在最低 100 IOPS(33.33 GiB 及以下)和最高 16,000 IOPS(5,334 GiB 及以上)之间,基线性能以每 GiB 卷大小 3 IOPS 线性扩展。 AWS 设计 gp2 卷以在 99% 的时间内提供 90% 的预置性能。 gp2 卷的大小范围为 1 GiB 到 16 TiB。 链接:

    1. Link

    有时性能也会有所不同: 根据 AWS Doc,实例类型至少每 24 小时一次可以支持 30 分钟的最大性能。如果您的工作负载需要超过 30 分钟的持续最高性能,请根据基准性能选择实例类型 链接:

    1. Link

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-02-20
      • 2016-05-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-01-04
      • 1970-01-01
      相关资源
      最近更新 更多