今天Nagios監控發現一臺Oracle數據庫服務器swap嚴重,致使部分Nagios監控項超時報警ios
查看該服務器,swap空間設置爲32G,已使用19G,使用率很是高,而且,vmstat顯示si嚴重web
此服務器物理內存32G,SGA設置20G,鏈接數不高,即便設置不當,也不該該出現如此嚴重的swap數據庫
cat /proc/meminfo服務器
發現此服務器設置了HugePage,但狀態均爲Freeoracle
咱們知道HugePage設置後,即便不使用它,所佔的內存空間也不能被其餘進程使用,而且,HugePage是pin在物理內存空間的,不會被swap,也就意味着32G物理內存,其實只有12G可用,難怪這麼高的swapspa
那麼,爲何會出現這個問題呢?以前爲何沒有出現這個問題?操作系統
緣由在於,此服務器在2個月前曾被重啓,以前工程師在啓動Oracle以前運行了ulimit -l unlimited,而2個月前重啓的工程師不知道開啓了HugePage,直接用標準模式重啓了Oracle。因爲操做系統limit配置的問題,致使沒法使用HugePage.net
解決方法很簡單orm
1.啓動Oracle前,執行ulimit -l unlimited進程
2.修改/etc/security/limits.conf
增長:
oracle soft memlock -1
oracle hard memlock -1
[@more @]