大家在AWS上经常会用到EFS,把它当做EC2的共享网盘来使用。由于有重要数据放置在EFS中,所以通过Cloudwatch对EFS的指标进行监控,最主要的是吞吐量利用率Throughput utilization (%)的监视。按照EFS自带监视阈值75%来设定。
开始使用EFS时,EC2与EFS的数据交互没有感觉有延迟或者卡顿,吞吐量利用率也一直在75%以下,处于很低的值。大约过了不到1个月,突然Cloudwatch报警,利用率超过75%,注意观察发现个别时候有EC2与EFS数据写入时瞬断现象。很快后期吞吐量利用率一直处于100%的状态,但针对EC2的程序数据写入到EFS,倒是并没有明显的问题,偶尔有1秒的EFS瞬断,但并不能确定就是因为吞吐量的问题。
经过调研发现,原来因为EC2与EFS的数据读取写入一直很频繁,而我设置EFS时选择的是默认的突发吞吐量模式,这其中有个关键指标值-积分余额(BurstCreditBalance),简单的来说,就是如果你的EFS平时使用率不是很高,有空闲时间,那么就会积攒积分以供你在频繁期使用,如果你一直处于频繁期的话,那么积分就会消耗光,没有空余积分,按照EFS吞吐量利用率Throughput utilization (%)的计算公式,那么利用率就会达到100%,触发报警。
那么解决方案呢,就是更改模式,从默认突发吞吐量模式变更为预置吞吐量模式,只要花钱就能解决的问题。