问题: 16C16G的容器内存使用率(含Cache)报警,从快速上升到了70%,上涨了30%,RSS内存使用率一直很恒定在40%,相差5G。
背景: 日志配置了log
结论:日志文件,正常只有一个活跃文件,会被写入Cache中。2月6日那天,我解压缩的几个历史日志文件(共5G),被写入Cache中,导致Cache涨了5G。刚才我移除这几个文件后,Cache就降下去了。
移除后,PageCache里面的活跃文件也跟着下降。因为配置log规则是满3G就压缩,可能触发这个规则,logrotate周期性检测要不要压缩这些文件,导致文件被加载到PageCache,并且处于活跃文件缓存中。
待论证:
- 这种情况,PageCache里面的active_file很高,如果持续增加,会不会导致oom。
通常来说,容易导致oom的主要是内存泄漏(rss)和匿名内存过多(active_anon和inactive_anon),但是如果active_file回收延迟、内存碎片增加、大块连续内存分配失败,也可能因内存无法及时释放导致oom。
todo: 找一台机器,解压缩大量日志文件,看看是否oom。
排查细节: