压测前十分钟 IOPS 能到五千,之后直接掉到八百,业务延迟从两毫秒涨到四十毫秒,重启实例也没能恢复。

原因不止一个,得分开看。云盘按基线加突发额度提供性能,额度用完就回落到基线。还有一种是小块随机写消耗额度比顺序写快得多。

不容易想到的是,同一实例上多块盘共用总 IOPS 上限。

上来先记录压测期间的 IOPS 曲线

iostat -x 5 | awk '{print $1,$2,$4}'

再往下换大块顺序写看基线

fio -name=s -rw=write -bs=128k -direct=1 -filename=/data/t

接着核对设备最大请求大小

cat /sys/block/vdb/queue/max_sectors_kb

等前面都确认过,再按业务峰值选更高规格云盘

lsblk && df -h

我习惯把每一步的执行时间和结果记在一边,后面复盘省事。

改完先别撤,确认这几项。压测一小时后 IOPS 稳定在规格标称基线附近,业务尾延迟不再出现断崖式抖动。

提醒一点。突发额度按时间窗口补回,短时间压测好看不代表线上扛得住,评估要看一小时以上的持续曲线。拖得越久,排查成本越高,因为现场状态会被后续操作覆盖。

作者 9823189