【问题标题】:Can I improve performance of a build server by switching from EBS to EFS storage?我可以通过从 EBS 切换到 EFS 存储来提高构建服务器的性能吗?
【发布时间】:2017-02-13 15:36:24
【问题描述】:

我想知道是否可以通过重新配置我们的 Jenkins 构建服务器以使用 EFS(AWS NFS 实施)而不是 EBS 磁盘来显着提高性能。

虽然 EFS 每 GB 的成本大约高出 3 倍,但实际成本可能只会高出大约 2 倍,因为在 EFS 上,您只需为已使用的空间付费,而在 EBS 上则需要全部付费。

此外,EFS 还具有另一个非常重要的优势:它可以扩展而无需为升级而关闭任何东西。调整 EBS 磁盘大小是一项耗时的操作,涉及停机时间。

这个问题与成本无关,更多的是关于性能,好像我可以将构建速度提高 20%,显然可以克服存储成本(更不用说以后需要较少维护的优势)。

【问题讨论】:

  • EBS 具有较低的延迟。构建通常需要许多小的源文件,所以不要赌 EBS。为什么不试试呢?
  • @BretzL 除非我从已经做过测试的人那里得到一些数据,否则我会做它并回馈所有结果。除此之外,我还在评估存储由 jenkins 构建的 docker 映像的相同方法。尽管如此,在 NFS 上托管 docker 数据的差异足以单独解决。
  • “Amazon EBS 可以为需要从单个 EC2 实例以最低延迟访问数据的工作负载提供性能。”我认为您不会看到 EFS 的性能优于 EBS。

标签: amazon-web-services amazon-ebs amazon-efs


【解决方案1】:

根据我的直接经验,这对于 Jenkins 服务器来说是一个非常糟糕的主意。我们想节省创建、扩展和以其他方式管理 EBS 卷的管理和自动化开销,因此我们将 Jenkins 主页安装在 EFS 上。

问题在于 Jenkins 构建通常涉及大量小文件(例如,Javascript npm 模块),这是 EFS 以及任何 NFS 实现的最坏情况。基于文件的存储要求每次文件访问都需要服务器往返。在我们的特定情况下,即使是小型项目的工作区也可能需要几分钟才能在 Jenkins 服务器上清理,其主目录位于 EFS 上。

省去麻烦,从我们的错误中吸取教训;我们将撤销这个选择。您的 Jenkins 服务器几乎肯定会比基于 EBS 的服务器慢得多。

【讨论】:

  • 我不会更好地描述这个问题:)
  • 我希望我们在犯同样的错误之前已经搜索过这个。一个 15 分钟的工作现在需要一个多小时。我们也将撤消此操作。
【解决方案2】:

这是我尝试使用 AWS EFS 存储 Jenkins 主目录(包括工作区)的中间结果。

我的错误是我错过了这个关于EFS performance 的隐藏得很好的页面,我想总结一下,除非你想在 EFS 上存储大量数据,否则它只能在一天中 0.5% 的时间内突发......是我们都期望的正常表现。

似乎 EFS 不仅非常慢,而且非常慢,慢到我无法将本地 EBS 卷中只有 8GB 的​​数据同步到 EFS 卷。

root@hostname:/efs# time rsync -ah --info=progress2 /jenkins/ /efs
        816.72M   6%  609.02kB/s    0:21:49 (xfr#12490, ir-chk=1009/273305)
          2.71G  18%  871.55kB/s    0:50:40 (xfr#42955, ir-chk=1070/306870)

平均速度约为 1.5mB/s,这太荒谬了。

因此,我什至决定不测试在其上运行 jenkins 构建作业 jenkins。

我试图查看这是否是由限制我速度的 AWS 引起的,但对 EFS 的监控并没有指出是这种情况。我认为这是如果您必须处理大量小文件时可能获得的预期性能。看一下截图:

【讨论】:

  • 我不确定我们是否将性能模式更改为最大 IO 并将 IOPS 配置为大约 2 或 3 mbps 会明显更好?每月只需​​ 20 美元或更少
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2010-11-27
  • 2012-04-24
  • 1970-01-01
  • 2010-10-15
  • 1970-01-01
  • 2012-05-18
  • 2012-02-16
相关资源
最近更新 更多