free -h cat /proc/meminfo | grep -E 'MemAvailable|Cached' sync && echo 3 > /proc/sys/vm/drop_caches
监控告警显示内存使用率 95%,但服务运行正常,没有出现 OOM。先别急着动参数,把报错原文和时间点记下来,顺序反了容易白折腾。
原因不复杂,页缓存占用了大部分内存,属于可回收部分,available 才是可用内存的真实参考,free 字段本身意义有限。
「Linux 内存缓存」排查到最后往往是很小的一处差异,前面那些复杂猜测可以先放一放。改完隔一天再看一次,当场正常不代表能稳住。
测试环境和线上的差别,往往就在版本号和那几行被忽略的配置上。线上出问题先对时间点,跟发布、备份、任务执行的时刻排一排,能省掉一半功夫。
日志级别临时调高可以,记得改回去,长期开着既占磁盘又掩盖真问题。权限不要一口气开到最大,先加到够用再往上试,范围小才好收。
处理上按这个顺序:关注 available 而不是 free;必要时手动释放缓存;排查是否存在真实泄漏。
改完只确认一件事:available 保持充足,告警阈值调整为按真实可用内存判断。