db2服務器linux的cache太高緣由

在線上db2數據庫服務器,使用的linux操做系統(RHEL,centos),當db2數據庫運行一段時間以後,操做系統的物理內存就趨近於0,同時系統的cache暴增,可是use卻不高,下面是正常使用linux

free -g
             total       used       free     shared    buffers     cached
Mem:           125         68         57         66          0         66
-/+ buffers/cache:          2        123 
Swap:           15          0         15
複製代碼

下面是異常狀況git

free -g
             total       used       free     shared    buffers     cached
Mem:           125         68         0         66          0         123
-/+ buffers/cache:          2        123 []()
Swap:           15          0         15 
複製代碼

此時可用物理內存過少,db2數據庫總體性能降低,影響業務使用,爲解決線上,採用臨時解決辦法,手動去釋放cache,方法以下github

sync
echo 1 >/proc/sys/vm/drop_caches
複製代碼

在沒定位到cache太高緣由以前,只能把手動清理cache的方法寫成腳本,放到crontab中定時去清理 通過屢次排查,終於發現操做系統cache太高的緣由,是由於db2數據庫備份致使,db2數據庫備份時,備份的數據寫入文件系統時,先通過文件系統的cache,再從cache寫入磁盤中,若是使用direct io,備份數據就不通過cache,會直接寫入磁盤,下面要解決 的是怎麼讓備份去使用direct io。sql

通過查閱db2官方幫助文檔,發現有一個參數DB2_BACKUP_USE_DIO,設置成on以後,能夠達到此效果,通過測試,db2備份時,系統cache再也不增加,在db2 9.5版本設置此參數須要重啓數據庫實例,db2 9.5之後版本設置以後,再下一次備份時生效。數據庫

喜歡的同窗能夠關注個人公衆號(db_arch)(Mysql數據庫運維與架構設計)

本篇文章由一文多發平臺ArtiPub自動發佈centos

相關文章
相關標籤/搜索