Linux系統內存占用90%以上——解決方法


問題:
[root@dbserver01 zx_epp_db]# free -m
             total       used       free     shared    buffers     cached
Mem:         15953      14706       1246          0         39      12687
-/+ buffers/cache:       1979      13973
Swap:         8015         27       7988
--------------------------------------------------------------------------------------------------------------------------------------------

首先要明確一個問題: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系統內存占用的百分比,無須過於關心,一般檢查系統負載參數即可

但也可以手動進行內存釋放,具體操作如下: 
[root@dbserver01 mysql]# cat /proc/sys/vm/drop_caches 
0

首先,/proc/sys/vm/drop_caches的值,默認為0

[root@dbserver01 mysql]#  sync

手動執行sync命令(描述:sync 命令運行 sync 子例程。如果必須停止系統,則運行 sync 命令以確保文件系統的完整性。sync 命令將所有未寫的系統緩沖區寫到磁盤中,包含已修改的 i-node、已延遲的塊 I/O 和讀寫映射文件) 

[root@dbserver01 mysql]# echo 3 > /proc/sys/vm/drop_caches 
[root@dbserver01 mysql]# cat /proc/sys/vm/drop_caches 
3

將/proc/sys/vm/drop_caches值設為3 

[root@dbserver01 mysql]# free -m 
             total       used       free     shared    buffers     cached
Mem:         15953       2914      13038          0          4         51
-/+ buffers/cache:       2858      13094
Swap:         8015         23       7992

再來運行free命令,發現現在的used為66MB,free為182MB,buffers為0MB,cached為11MB.那么有效的釋放了buffer和cache. 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM