AWS EFS性能下降问题

9
我们已经将WordPress网站托管在AWS EC2上,并使用自动缩放和EFS。但突然间,PermittedThroughput变成了接近零字节,BurstCreditBalance每天都在减少(从2TB到几MB!)。EFS的大小只有约2GB!我们已经第二次遇到这个问题。我想知道是否有人有类似的经验或对这种情况有任何建议。计划在未来几天从EFS转移到NFS或Glusterfs。

cloudwatch graphp

enter image description here


1
将自己的NFS或glusterfs转移到使用EBS是没有意义的。正如@Michael在“存储更多文件”提示中指出的那样,您可以将几个巨大的虚拟文件放入您的EFS存储中以获得吞吐量。 - mootmoot
2个回答

9
亚马逊 EFS 的吞吐量会随着文件系统的增长而增加。
...
文件系统的突发能力(在时间和突发速率方面)与其大小直接相关。更大的文件系统可以以更大的速率进行更长时间的突发。因此,如果您的应用程序需要更多的突发能力(也就是说,如果您发现您的文件系统的突发信用已经用完),则应增加文件系统的大小。
注意
Amazon EFS 没有预配功能,因此要使文件系统变大,您需要向其中添加更多数据。
http://docs.aws.amazon.com/efs/latest/ug/performance.html
您提到您的文件系统只存储了 2 GiB 的数据。这是问题所在:乍一看反直觉,但 EFS 实际上随着越来越大而变得更快......反之亦然。小型文件系统只能以每个 GiB 存储的每秒 50 KiB 的速度积累突发信用。
因此,对于一个 2 GiB 的文件系统,每天传输非常少量的数据都会耗尽您的信用:
60 sec/minute ×
60 min/hour ×
24 hr/day ×
0.05 MiB/s per GiB stored ×
2 GiB stored = 8,640 MiB/day

因此,每天的数据传输量仅为8.6 GiB。

如果您记得您每月只支付0.60美元,这似乎很奇怪。

您可以通过简单地存储更多数据来线性提高性能。该计算所使用的文件系统大小每小时更新一次,因此如果您选择这种方式,则在几个小时内应该会看到上升。

到目前为止,它之所以运行良好,是因为每个新的文件系统都附带有等价于2.1 TiB的初始信用额度。这主要是为了让文件系统在您最初加载数据时保持快速,但在低总存储环境(如您描述的环境)中,它将持续几天甚至几周,然后突然(显然)您最终看到系统稳定下来到其正确的基线行为。

基本上,您正在支付两个相互关联的参数设置——总存储容量和基线吞吐量——其中没有一个是您配置的。如果您需要更多存储空间,只需存储更多文件…如果您需要更大的吞吐量,只需…存储更多文件。


4
有点晚来参加派对了。
TL;DR
为了增加聚合基线吞吐量,生成虚拟数据以增加文件系统的大小。这将使文件系统的基线和爆发性能更好。
有两个考虑因素:
  1. 每GB的成本因地区而异,但价格大约为每GB 0.30 - 0.36美元(截至2018年)
  2. 随着文件系统大小的增加,其他指标如突发聚合吞吐量、最大突发持续时间和文件系统每天可以突发的时间百分比也会增加。观点:我喜欢获得大约256GB以上的文件系统。

性能指标:

  1. 基线聚合吞吐量
  2. 突发聚合吞吐量
  3. 最大突发持续时间
  4. 文件系统每天可以突发的时间百分比

查看性能文档以获取有关每个指标的增加方式更多信息。

在非Windows服务器上,您可以使用以下脚本生成虚拟数据以增加文件系统大小:

#!/bin/bash 
COUNTER=0
while [ $COUNTER -lt $1 ]; do
    # Use DD to generate 1MB of data 1024 times from /dev/zero and add the newly created file to $2/N.txt
    dd if=/dev/zero of=$2/$COUNTER.txt bs=1048576 count=1024
    echo "Added file ${COUNTER}.txt to ${2}/"
    ((COUNTER++))
done

# Save this file as create.sh
# Be sure to run: sudo chmod +x create.sh

如果您打算从已挂载EFS文件系统的EC2实例上运行此脚本,我的建议是使用网络性能高的EC2实例。这将有助于缩短为那些时间紧迫的人生成文件所需的时间。
使用以下命令调用脚本:create.sh 256 "/mnt/efs-directory/dummy"
注意:运行上述命令意味着您将生成256个1GB大小的文件。如果您希望拥有更小或更大的数据量,请将256更改为您想要的文件系统大小。
一些其他你可以做的事情包括:
  1. 如果使用 Elastic Beanstalk,为负载均衡器生成 CloudFront 分发
  2. 从 WordPress 中删除不必要的插件
  3. 为 Apache 或 Nginx 安装缓存(OPCache)
如果你选择将其连接起来,CloudWatch 中有一个可用于 EFS 的仪表板(链接1)。它具有您需要了解文件系统性能的所有指标。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接