凌晨线上告警常暴露一个误区:VPS用dd测顺序写入可达600MB/s,数据库的4K随机请求p99却从1ms升到40ms;备份持续半小时,吞吐还会跌到百兆以下。只看峰值,容易把顺序带宽误当业务能力。借助随身服务器查看服务状态时,磁盘测试仍要统一负载、观察延迟分位数并保存复现参数。
如果你正在选机器,或者想先把线路和配置跑通再谈长期方案,可以先看看这几家的线路说明和技术参数:ethernetservers(全球云服务器),先看清带宽线路、流量策略和退款条款,再决定要不要迁。
顺序读写把数据放在相邻位置,磁盘或云盘可连续传输并合并请求,测到的是理想带宽。真实业务更接近数据库索引、对象元数据和日志落盘等小块随机访问:每次4K读写都可能触发寻道或映射转换,还受文件系统锁与CPU调度干扰。因此,600MB/s与高随机读写IOPS并不矛盾,前者只说明连续通道顺畅。

测试还要排除页缓存假象:最初写入进入内存,速率很高,随后脏页回写或缓存耗尽,速度才显露原形。规范应固定4K块、队列深度、读写比例、缓存状态和时长。评估4K块延迟时使用低队列深度,测并发再逐级增加,同时保存吞吐、IOPS及p95、p99延迟,不能只报平均值。
第一阶段做空闲基线,连续采集5分钟,确认没有备份、编译或定时任务干扰;随后以4K块和按业务固定的读写比例运行随机负载,例如70%读、30%写。关注p99而非均值,因为少量高延迟请求会被平均数隐藏,却正是Web请求卡顿的来源。单线程服务从队列深度1开始,并发数据库固定多个档位,不能边调参数边比较。

第二阶段执行持续写入,预分配测试文件并保留空闲空间,按固定时长(如30分钟)分段记录速率、延迟和负载,并统一刷盘口径。后段速率若低于前段70%,可先标记明显掉速,说明缓存或云盘突发额度可能耗尽。第三阶段做测试结果复现:清理文件,在相同镜像、文件系统、挂载参数、CPU与内存状态下重复至少三轮,保存工具版本、块大小、队列深度、缓存开关、时长和空闲空间比例,最后取中位数并报告波动。
常见踩坑是边跑业务边测、只看平均延迟、把未落盘数据当成写完,以及直接比较不同块大小、读写比例或缓存模式的数字。统一规范让结果回答三件事:随机请求尾部延迟是否达标,持续写入是否稳定,换机或重启后能否得到接近结论。
进入实际测试后,顺序吞吐反映的是大块连续访问的带宽能力,不能直接代表数据库或虚拟机的体验。随机负载更受寻道、控制器调度和宿主机争用影响,所以应分别观察吞吐、IOPS与延迟,不能用单一峰值给磁盘下结论。
评估4K块延迟时,平均值与p99必须一起看:均值不高但p99骤升,往往意味着排队、虚拟化调度或后端存储抖动。IOPS约等于队列深度除以平均延迟,不能脱离QD横向比较。测试至少覆盖4K随机读、随机写和混合读写,并固定队列深度、运行时长与超时;只跑一次或只报均值,结论通常不可靠。
测试前先确认页缓存、写回缓存和THP状态。贴近裸盘可使用fio的direct=1并配合fsync;模拟应用落盘则要写清是否允许缓存。随机写还应区分临时文件、同步提交和直接写入,否则测到的可能只是内存速度。CPU亲和性、NUMA、文件预分配及TRIM/discard策略也应固定。

持续写入掉速常见于消费级SSD的SLC缓存耗尽,也可能来自云盘配额、纠删码重建或共享资源限速。短测高速不代表长时间稳定,应使用固定容量逐步延长写入时间,同时采集错误数、队列深度、带宽和延迟;速率下降时,再区分缓存耗尽、邻居争用与介质劣化。
保证测试结果复现,需记录VPS型号、区域、CPU与内存、内核、fio版本、文件系统、挂载参数、块大小、队列深度、时长和预热步骤。保存原始JSON结果,而非只截峰值;清理文件后先短预热,再按相同顺序执行多轮。云环境还应选择相近时段复测,并核对配额和宿主机告警,避免把共享负载误判为磁盘性能。
可执行检查清单:①确认磁盘型号、挂载点、剩余空间与inode;②记录系统和工具版本;③检查缓存、TRIM、文件系统及挂载参数;④依次执行固定参数的顺序读写、4K随机读写和混合读写;⑤同步保存吞吐、IOPS、平均延迟与p99;⑥进行10分钟以上持续写入并观察是否掉速;⑦在相近时段重复两轮,比较中位数和波动;⑧核对云厂商配额、共享资源与告警记录后再形成结论。