Linux系統內存占用90%以上,是否屬於正常范圍?
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,那么通常系統速度就會變慢,一般有如下幾種可能: 1) 有程序占用大量CPU,使用top命令來檢查(看看是否有java程序鎖死之類的故障) 2) 有程序占用大量內存,使得內存真正不夠用了(這個才是真正需要加內存的時候),比如由於MySQL在較大負載下運行容量為GB級別的數據庫導致內存不夠用,需要給服務器插入更多物理內存 3) 磁盤系統讀寫故障,IO吞吐錯誤造成CPU負載上升,需要光盤引導進入單用戶模式掃描修復磁盤,修不好就只能更換新硬盤了 因此,對於Linux/Unix系統內存占用的百分比,無須過於關心,一般檢查系統負載參數即可 但也可以手動進行內存釋放,具體操作如下:
cat /proc/sys/vm/drop_caches
0
首先,/proc/sys/vm/drop_caches的值,默認為0
free一下查看當前內存可使用的較少,執行一下以下的命令,可以解決當前的問題
echo 3 > /proc/sys/vm/drop_caches
結果
cat /proc/sys/vm/drop_caches 3
再來運行free命令,發現現在的used為66MB,free為182MB,buffers為0MB,cached為11MB.那么有效的釋放了buffer和cache.