Linux系統記憶體佔用90%以上——解決方案 首先要明確一個問題:Linux系統記憶體佔用90%以上,是否屬於正常範圍?網上有詳細的解釋,這屬於正常現象~~~ www.2cto.com Linux/Unix系統管理記憶體的方式和windows是不一樣的,即便是一個負載很小的linux,跑幾天后,記憶體佔用量也將達到90%以上,即便無人訪問,這個數字是完全正常的。但是,這個記憶體佔用量不會達到100%的,每天夜裡系統都會執行/etc/cron.daily進行記憶體最佳化。 Linux/Unix系統是非常穩健的,雖然記憶體佔用顯示90%以上,但依然可保證365天以上無須重啟。對於Linux系統,評估其壓力的主要指標是最近5分鐘的負載指數:比如用w命令或者top去看,可以看到“0.70 0.35 0.01”這樣的數字,分別表示5分鐘內的、10分鐘內的、15分鐘內排隊的進程數,只要第一個數字即5分鐘內的負載不大於5,系統就是健康的,不用做任何維護;如果這個數字大於了5,那麼通常系統速度就會變慢,一般有如下幾種可能: www.2cto.com 1) 有程式佔用大量CPU,使用top命令來檢查(看看是否有java程式鎖死之類的故障) 2) 有程式佔用大量記憶體,使得記憶體真正不夠用了(這個才是真正需要加記憶體的時候),比如由於MySQL在較大負載下運行容量為GB層級的資料庫導致記憶體不夠用,需要給伺服器插入更多實體記憶體 3) 磁碟系統讀寫故障,IO吞吐錯誤造成CPU負載上升,需要光碟片引導進入單一使用者模式掃描修複磁碟,修不好就只能更換新硬碟了 因此,對於Linux/Unix系統記憶體佔用的百分比,無須過於關心,一般檢查系統負載參數即可 但也可以手動進行記憶體釋放,具體操作如下: [root@ajcheng]# cat /proc/sys/vm/drop_caches 0 首先,/proc/sys/vm/drop_caches的值,預設為0 [root@ajcheng]# sync 手動執行sync命令(描述:sync 命令運行 sync 子常式。如果必須停止系統,則運行 sync 命令以確保檔案系統的完整性。sync 命令將所有未寫的系統緩衝區寫到磁碟中,包含已修改的 i-node、已延遲的塊 I/O 和讀寫對應檔) [root@ajcheng]# echo 3 > /proc/sys/vm/drop_caches [root@ajcheng]# cat /proc/sys/vm/drop_caches 3 將/proc/sys/vm/drop_caches值設為3 [root@ajcheng]# free -m total used free shared buffers cached Mem: 249 66 182 0 0 11 -/+ buffers/cache: 55 194 Swap: 511 0 511 再來運行free命令,發現現在的used為66MB,free為182MB,buffers為0MB,cached為11MB.那麼有效釋放了buffer和cache.