Linux

高 INACTIVE 記憶體

  • April 30, 2019

我在執行“top”時使用 Oracle Enterprise Linux 6.5 和 Oracle Database 11g 向我展示這個

top - 14:08:02 up 5 days, 18:34,  2 users,  load average: 0.00, 0.01, 0.05
Tasks: 340 total,   1 running, 331 sleeping,   8 stopped,   0 zombie
Cpu(s):  0.0%us,  0.0%sy,  0.0%ni, 99.9%id,  0.0%wa,  0.0%hi,  0.0%si,  0.0%st
Mem:  132038392k total, 100871400k used, 31166992k free,    16912k buffers
Swap: 32767996k total,        0k used, 32767996k free, 99462140k cached

我將 70GB 記憶體專用於我的數據庫,所以當我啟動我的數據庫時顯示以下錯誤

ORA-00845: MEMORY_TARGET not supported on this system

然後我執行“vmstat -s”顯示以下輸出

132038392  total memory
100928456  used memory
  278536  active memory
99495304  inactive memory

我意識到我用過的記憶體中有 96GB 是 INACTIVE 記憶體,然後我使用以下命令來釋放我的 INACTIVE 記憶體

sync && echo 3 > /proc/sys/vm/drop_caches 

什麼也沒發生,除非我重新啟動我的作業系統,否則我仍然無法啟動我的數據庫 我該如何解決這個問題?

我想用下面的命令字元串來解決這個問題:

首先,寫入此內容將導致核心刪除乾淨的記憶體一旦刪除,它們的記憶體就會空閒。

To free pagecache:

echo 1 > /proc/sys/vm/drop_caches

echo 2 > /proc/sys/vm/drop_caches

echo 3 > /proc/sys/vm/drop_caches

如果這個問題沒有解決,那麼你應該這樣做:

Now change the value by modifying /etc/sysctl.conf 
kernel.shmmax 
kernel.shmall 
then force the system to activate this setting file without a reboot.
$ sysctl -p

引用自:https://serverfault.com/questions/959818