Oracle swap 100%案例分析
操作系统版本:centos5.864bit数据库版本:11.2.0.1问题描述:最近对数据库添加内存到32G,并调大了MEMORY_MAX_SIZE参数为28G,MEMORY_TARGET参数为24G;运行了
操作系统版本:centos5.8 64bit
数据库版本:11.2.0.1
问题描述:
最近对数据库添加内存到32G,并调大了MEMORY_MAX_SIZE参数为28G,MEMORY_TARGET参数为24G;运行了一小段时间,服务器空间,没有发现大的问题,只是nagios监控到主库和备库的swap使用率偏高,而在添加内存之前并未出现过这种情况,调整前操作系统内存大小为16G,调整后MEMORY_MAX_SIZE和MEMORY_TARGET参数均为11G!
调整前交换分区使用率:
调整后交换分区使用率:
问题分析:
先来说说下交换分区的作用,在操作系统范畴内,交换分区的作用是在物理内存使用完之后,将磁盘空间(也就是SWAP分区)虚拟成内存来使用,换句话说在内存未使用光之前,是不会用到交换分区的,真的是这样吗?下面来看下nagios的内存监控和oracle AWR报告中关于内存方面的信息!
通过查看nagios内存监控和AWR报告可以很明显的知道,香港服务器,实际内存使用率只到45%左右,可是为什么会用到交换分区呢?而且奇怪的是交换分区使用率到了100%后,oracle照样能正常运行,未收到任何的alert告警信息,如果真的出现内存不足,连接数据库的时候应该会出现类似下图所示的报错信息。
问题处理:
于是简单的处理了下这个问题,分别在主备库上敲下面的命令释放交换分区空间,但是问题依旧,过一段时间又会收到报警!
[root@db1 ~]# swapoff -a
[root@db1 ~]# swapon -a
于是参考下面的文章对内核参数进行调整,将swappiness参数从默认的60改为0,告诉操作系统,尽量不要使用交换分区!
后续跟踪:
修改后观察一段时间,服务器空间,交换分区使用率低且并无大幅度增长情况出现!
本文出自 “斩月” 博客,谢绝转载!
上一篇: PHP使用SWOOLE扩展实现定时同步 MySQL 数据的方法
下一篇: 怎么用PHP定位IP所在地