Linux系统参数造成的Oracle服务器停止响应

来源:互联网 发布:慕容安cos淘宝 编辑:程序博客网 时间:2024/06/06 13:58

环境:

oracle 11gr2 + dataguard

512GB内存 + 128核cpu + 高性能存储服务器

uname -an
Linux dbhost 2.6.18-238.el5 #1 SMP Sun Dec 19 14:22:44 EST 2010 x86_64 x86_64 x86_64 GNU/Linux


症状:

做rman备份时,系统内存急剧下降,直到系统失去响应宕机。


病因:

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,导致系统失去响应。


解决办法:

修改参数:最低保留内存加大至50gb,vfs_cache_pressure改到200

vm.min_free_kbytes = 52428800

vm.vfs_cache_pressure=200 


经实测,rman备份时,可用内存下降到50gb附近(最低45gb),不再下降,系统运行正常。


原创粉丝点击