生产环境的问题之缓存小磁盘频繁换页

生产环境的问题之缓存小磁盘频繁换页
「缓存小 + 磁盘频繁换页」,本质是内存容量不足以承载热点数据,操作系统/进程被迫不断在「内存 ↔ 磁盘」之间搬运数据页,专业上称为内存颠簸(Thrashing),直接后果是磁盘IO拉满、CPU空等IO、业务吞吐量暴跌、响应耗时出现大量毛刺。“缓存”在不同层级有不同含义,对应的根因和解决方案完全不同,下面结合你接触的 Java 网关、Hadoop 数仓场景分层说明。一、底层原理:为什么缓存小会触发频繁换页操作系统通过「虚拟内存 + 分页机制」管理内存:系统把内存切成固定大小的页(Page,通常4KB),磁盘上的交换分区(Linux Swap / Windows 虚拟内存)是内存的后备存储;当内存不足时,内核会把长期不用的内存页换出到磁盘,腾出空间给当前需要的程序;当缓存太小、热点数据装不下时,数据刚被换出去马上又要用到,又得从磁盘换入回来,形成高频换入换出的恶性循环,也就是频繁换页。我们常说的换页包含两类:匿名页换页:进程运行内存(如JVM堆)写到Swap分区,也就是常说的内存交换;文件页换页:系统页缓存(Page Cache)里的文件数据被回收,下次读取重新从磁盘加载,大数据/数仓场景最常见。二、分层场景:原因 + 针对性解决方案场景1:系统层 Page Cache 不足(Hadoop/DWH数仓场景最核心)Linux 会把空闲内存自动用作页缓存(Page Cache),缓存磁盘上的文件数据,下次读相同文件直接走内存,性能提升百倍以上。这