BK 云 / 系统 首页
ZH
English ENDeutsch DEEspañol ES中文 ZHFrançais FRPortuguês (Brasil) PT-BR日本語 JAहिन्दी HINederlands NL
联系我 ↗
← 返回技术笔记

为什么 EFS 几个月后才突然变慢?

EFS 的容量问题,可能早在症状出现前就已存在。一个小文件系统可以看似正常地支撑数周甚至数月,同时不断消耗有限的突发积分。应用没报错,仪表盘也是绿色,于是人们逐渐信任这套架构。直到积分归零,同样的负载才撞上低得多的可持续吞吐量上限。

问题因此看起来突然发生,但从容量趋势看,它早有迹象。

隐藏的不匹配

在突发模式下,基准吞吐量随 EFS Standard 中的数据量增长。AWS 文档给出的基准是每 GiB 对应 50 KiB/s,每个文件系统至少可获得 1 MiB/s 的计量吞吐量。负载低于基准时积累积分,高于基准时消耗积分。

长期平均需求只要略高于基准,就可能形成危险的消耗趋势。之前积累的积分可以暂时补足差额,不一定立刻出故障,但余额会一天比一天少。

为什么症状指向错误的方向

存储操作变慢后,应用工作进程就会等待。Linux 平均负载也计入不可中断的 I/O 等待,所以存储瓶颈很容易看起来像算力不足。即使 CPU 不是根因,请求积压、工作进程耗尽和超时,也会影响整个服务。

如果新实例仍然访问同一个受限的共享文件系统,扩容反而可能加重问题。瓶颈没有变,更多并发请求却会继续增加它的压力。

正常运行六个月,并不能说明容量设计没问题

长期无故障,只能说明当时的需求、基准吞吐量和剩余积分共同支撑了服务,不能证明积分耗尽之后仍然够用。因此,不断下降的 BurstCreditBalance 不只是一个容量细节,更是可靠性方面的早期预警。

负载测试也应覆盖稳定运行状态,而不只看短时峰值。十分钟的测试可能证明突发上限够高,却看不出几千小时里逐渐累积的容量缺口。

更好的调查顺序

  1. 将 CPU 利用率与平均负载和 I/O 等待进行比较。
  2. 检查 EFS BurstCreditBalance 在数周或数月内的变化。
  3. 比较 MeteredIOBytes 和 PermittedThroughput.
  4. 将存储限制与应用程序延迟和工作线程饱和度相关联。
  5. 看清 Standard 存储类别中的实际数据量,因为它决定突发模式的基准。
  6. 判断负载更适合突发、弹性,还是预置吞吐量。

从中得到的工程经验

突发容量是缓冲,不是容量规划。对任何依赖积分的服务,都应关注余额变化的方向与速度,而不是只看它是否还大于零。前文记录了真实故障的形成过程,下一篇则把这些经验落实到具体的 CloudWatch 监控设计中。

官方参考资料

ZH
English ENDeutsch DEEspañol ES中文 ZHFrançais FRPortuguês (Brasil) PT-BR日本語 JAहिन्दी HINederlands NL