centos7 內存佔用率高處理問題

一、內存佔用高是正常現象嗎?

       在Linux中經常發現空閒內存很少,似乎所有的內存都被系統佔用了,表面感覺是內存不夠用了,其實不然。這是Linux內存管理的一個優秀特性,在這方面,區別於 Windows的內存管理。主要特點是,無論物理內存有多大,Linux都將其充份利用,將一些程序調用過的硬盤數據讀入內存,利用內存讀寫的高速特性來提高Linux系統的數據訪問性能。而Windows是隻在需要內存時,才爲應用程序分配內存,並不能充分利用大容量的內存空間。換句話說,每增加一些物理內存,Linux都將能充分利用起來,發揮了硬件投資帶來的好處,而Windows只將其做爲擺設,即使增加8GB甚至更大。
       Linux 的這一特性,主要是利用空閒的物理內存,劃分出一部份空間,做爲 cache 和 buffers,以此提高數據訪問性能。
       頁高速緩存(cache)是Linux內核實現的一種主要磁盤緩存。它主要用來減少對磁盤的I/O操作。具體地講,是通過把磁盤中的數據緩存到物理內存中,把對磁盤的訪問變爲對物理內存的訪問。
       磁盤高速緩存的價值在於兩個方面:第一,訪問磁盤的速度要遠遠低於訪問內存的速度,因此,從內存訪問數據比從磁盤訪問速度更快。第二,數據一旦被訪問,就很有可能在短期內再次被訪問到。

二、查看內存使用的正確方法

運行命令free

[root@java-test ~]# free -hm
     total   used   free   shared  buff/cache   available
Mem:   7.6G    3.7G   2.8G    956M    1.1G      2.8G
Swap:    0B     0B    0B

詳解:

1、total:總的物理內存

2、used:系統使用的內存,包括buff+cache。並非系統真正使用的內存。系統真正使用的內存=used-buff/cache

3、free:空閒的內存,系統未使用的內存,並不是系統啓動應用程序可以真正使用的內存。

4、shared:共享內存

5、buff/cache:磁盤緩存的大小

6、available:在舊版free中,沒有這個選項。這個選項指的是,系統啓動程序時可以利用的內存,當這個選項很小或者不夠啓動程序所需的內存,會提示系統內存不足,無法啓動,此時就需要處理問題,是物理內存真的不足,還是清理系統緩存。

三、清理緩存

當系統內存不足時,用free查看,內存buff/cache佔用很多。此時,可清理內存,將緩存數據寫入到磁盤,然後清理內存。

1、編寫清理腳本

思路:可以判斷free中可用內存的大小,放入定時任務,進行實時監控。

#!/bin/bash
exec &>> /var/log/mem.log
Free=`free -m|awk 'NR==2 {print $4}'`
if [ $Free -lt 2500 ];then
sync
echo 3 > /proc/sys/vm/drop_caches
fi

可以按照自己的生產環境,進行修改腳本

crontab

* * * * * /bin/sh /.Script/mem.sh >/dev/null 2>&1

總結:此博客,如有錯誤地方,歡迎━(*`∀´*)ノ亻大家積極指出來。






發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章