首页 > 代码库 > Oracle数据库所在服务器swap严重

Oracle数据库所在服务器swap严重

今天Nagios监控发现一台Oracle数据库服务器swap严重,导致部分Nagios监控项超时报警

查看该服务器,swap空间设置为32G,已使用19G,使用率非常高,并且,vmstat显示si严重

此服务器物理内存32G,SGA设置20G,连接数不高,即使设置不当,也不应该出现如此严重的swap

cat /proc/meminfo

发现此服务器设置了HugePage,但状态均为Free

我们知道HugePage设置后,即使不使用它,所占的内存空间也不能被其他进程使用,并且,HugePage是pin在物理内存空间的,不会被swap,也就意味着32G物理内存,其实只有12G可用,难怪这么高的swap

那么,为什么会出现这个问题呢?之前为什么没有出现这个问题?

原因在于,此服务器在2个月前曾被重启,之前工程师在启动Oracle之前运行了ulimit -l unlimited,而2个月前重启的工程师不知道开启了HugePage,直接用标准模式重启了Oracle。由于操作系统limit配置的问题,导致无法使用HugePage

解决方法很简单

1.启动Oracle前,执行ulimit -l unlimited

2.修改/etc/security/limits.conf

增加:

oracle soft memlock -1
oracle hard memlock -1

[@more @]

Oracle数据库所在服务器swap严重