欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  数据库

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

程序员文章站 2024-02-08 19:11:58
...

由于rman备份到本地存储,占用大量内存做cache,当内存不够时,系统开始回收cache内存,把数据同步写入磁盘。写入磁盘过程是比rm

环境:

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),不再下降,系统运行正常。