症状:
通过几天观察,每次rman备份时都会造成cache mem 内存升,直到free mem 耗尽的问题。直到系统失去响应宕机。
linux默认参数vm.min_free_kbytes 64mb,
/proc/sys/vm/min_free_kbytes
该文件表示强制Linux VM最低保留多少空闲内存(Kbytes)。
当可用内存低于这个参数时,系统开始回收cache内存,以释放内存,直到可用内存大于这个值。/proc/sys/vm/vfs_cache_pressure
该文件表示内核回收用于directory和inode cache内存的倾向;缺省值100表示内核将根据pagecache和swapcache,把directory和inode cache保持在一个合理的百分比;降低该值低于100,将导致内核倾向于保留directory和inode cache;增加该值超过100,将导致内核倾向于回收directory和inode cache。
由于rman备份到本地存储,占用大量内存做cache,当内存不够时,系统开始回收cache内存,把数据同步写入磁盘。写入磁盘过程是比rman写入内存的速度要慢得多,rman继续申请占用cache,而系统却无法及时回收可用内存,最终可用内存为0,导致系统失去响应。
解决办法:
修改参数:最低保留内存加大至10gb,vfs_cache_pressure改到200
min_free_kbytes = 10428800
vfs_cache_pressure=200
经实测,rman备份时,可用内存下降到10gb附近(最低8gb),不再下降,系统运行正常。
测试清理pagecache、dentries和inodes
或者sysctl -w vm.drop_caches=3