要達(dá)到釋放緩存的目的,我們首先需要了解下關(guān)鍵的配置文件/proc/sys/vm/drop_caches。這個(gè)文件中記錄了緩存釋放的參數(shù),默認(rèn)值為0,也就是不釋放緩存。他的值可以為0~3之間的任意數(shù)字,代表著不同的含義:
成都創(chuàng)新互聯(lián)公司是一家專注于成都網(wǎng)站建設(shè)、網(wǎng)站建設(shè)與策劃設(shè)計(jì),德惠網(wǎng)站建設(shè)哪家好?成都創(chuàng)新互聯(lián)公司做網(wǎng)站,專注于網(wǎng)站建設(shè)十余年,網(wǎng)設(shè)計(jì)領(lǐng)域的專業(yè)建站公司;建站業(yè)務(wù)涵蓋:德惠等地區(qū)。德惠做網(wǎng)站價(jià)格咨詢:18982081108
–
不釋放
1
–
釋放頁緩存
2
–
釋放dentries和inodes
3
–
釋放所有緩存
知道了參數(shù)后,我們就可以根據(jù)我們的需要,使用下面的指令來進(jìn)行操作。
首先我們需要使用sync指令,將所有未寫的系統(tǒng)緩沖區(qū)寫到磁盤中,包含已修改的
i-node、已延遲的塊
i/o
和讀寫映射文件。否則在釋放緩存的過程中,可能會(huì)丟失未保存的文件。
#sync
接下來,我們需要將需要的參數(shù)寫進(jìn)/proc/sys/vm/drop_caches文件中,比如我們需要釋放所有緩存,就輸入下面的命令:
#echo
3
/proc/sys/vm/drop_caches
此指令輸入后會(huì)立即生效,可以查詢現(xiàn)在的可用內(nèi)存明顯的變多了。
要查詢當(dāng)前緩存釋放的參數(shù),可以輸入下面的指令:
#cat
/proc/sys/vm/drop_caches
下面我們來看一個(gè)實(shí)際測試:
先看看內(nèi)存使用狀況
[root@node1
~]#
free
-m
total
used
free
shared
buffers
cached
mem:
8004
6557
1446
163
5630
-/+
buffers/cache:
763
7240
swap:
1983
1983
把內(nèi)存里的數(shù)據(jù)暫時(shí)寫到硬盤里
[root@node1
~]#
sync
修改/proc/sys/vm/drop_caches文件
[root@node1
~]#
echo
3
/proc/sys/vm/drop_caches
[root@node1
~]#
cat
/proc/sys/vm/drop_caches
再看內(nèi)存,終于釋放出來了。
[root@node1
~]#
free
-m
total
used
free
shared
buffers
cached
mem:
8004
631
7372
60
-/+
buffers/cache:
570
7433
swap:
1983
1983
在Linux系統(tǒng)下,我們一般不需要去釋放內(nèi)存,因?yàn)橄到y(tǒng)已經(jīng)將內(nèi)存管理的很好。但是凡事也有例外,有的時(shí)候內(nèi)存會(huì)被緩存占用掉,導(dǎo)致系統(tǒng)使用SWAP空間影響性能,此時(shí)就需要執(zhí)行釋放內(nèi)存(清理緩存)的操作了。
Linux系統(tǒng)的緩存機(jī)制是相當(dāng)先進(jìn)的,他會(huì)針對dentry(用于VFS,加速文件路徑名到inode的轉(zhuǎn)換)、Buffer Cache(針對磁盤塊的讀寫)和Page Cache(針對文件inode的讀寫)進(jìn)行緩存操作。但是在進(jìn)行了大量文件操作之后,緩存會(huì)把內(nèi)存資源基本用光。但實(shí)際上我們文件操作已經(jīng)完成,這部分緩存已經(jīng)用不到了。這個(gè)時(shí)候,我們難道只能眼睜睜的看著緩存把內(nèi)存空間占據(jù)掉么?
所以,我們還是有必要來手動(dòng)進(jìn)行Linux下釋放內(nèi)存的操作,其實(shí)也就是釋放緩存的操作了。
要達(dá)到釋放緩存的目的,我們首先需要了解下關(guān)鍵的配置文件/proc/sys/vm/drop_caches。這個(gè)文件中記錄了緩存釋放的參數(shù),默認(rèn)值為0,也就是不釋放緩存。他的值可以為0~3之間的任意數(shù)字,代表著不同的含義:
0 – 不釋放
1 – 釋放頁緩存
2 – 釋放dentries和inodes
3 – 釋放所有緩存
知道了參數(shù)后,我們就可以根據(jù)我們的需要,使用下面的指令來進(jìn)行操作。
首先我們需要使用sync指令,將所有未寫的系統(tǒng)緩沖區(qū)寫到磁盤中,包含已修改的 i-node、已延遲的塊 I/O 和讀寫映射文件。否則在釋放緩存的過程中,可能會(huì)丟失未保存的文件。
#sync
接下來,我們需要將需要的參數(shù)寫進(jìn)/proc/sys/vm/drop_caches文件中,比如我們需要釋放所有緩存,就輸入下面的命令:
#echo 3 /proc/sys/vm/drop_caches
此指令輸入后會(huì)立即生效,可以查詢現(xiàn)在的可用內(nèi)存明顯的變多了。
要查詢當(dāng)前緩存釋放的參數(shù),可以輸入下面的指令:
#cat /proc/sys/vm/drop_caches
#free -m
對于清除swap,只有先關(guān)閉swap了,用:
#swapoff -a
而后啟用swap,因?yàn)橹皇乔宄?,不是說不要用swap的嘛 :
#swapon -a
Linux 自動(dòng)釋放內(nèi)存腳本
發(fā)表于119 天前 ? 技術(shù)文章 ? 暫無評論
腳本下載地址:Cached
腳本內(nèi)容:
#! /bin/bash
# cache釋放:
# To free pagecache:
sync
sync
#echo 1 /proc/sys/vm/drop_caches
# To free dentries and inodes:
#echo 2 /proc/sys/vm/drop_caches
# To free pagecache, dentries and inodes:
echo 3 /proc/sys/vm/drop_caches
# 說明,釋放前最好sync一下,防止丟數(shù)據(jù)。
利用系統(tǒng)crontab實(shí)現(xiàn)每天自動(dòng)運(yùn)行:
crontab -e
輸入以下內(nèi)容:
00 00 * * * /root/Cached.sh
每天0點(diǎn)釋放一次內(nèi)存,這個(gè)時(shí)間可以根據(jù)自己需要自行設(shè)置,我的服務(wù)器情況是每天自動(dòng)釋放一次就OK了
在設(shè)置這個(gè)腳本的時(shí)候,發(fā)生了一系列的問題
在測試運(yùn)行./Cached.sh時(shí)提示錯(cuò)誤:Permission denied 權(quán)限的問題
解決方法:
chmod +x .Cached.sh
或
chmod 777 Cached.sh
接著又出現(xiàn)錯(cuò)誤提示:/bin/bash^M: bad interpreter: No such file or directory
這是因?yàn)樵趙indows下編輯的.sh文件編碼格式和linux下不一樣,轉(zhuǎn)換一下編碼格式即可:
dos2unix Cached.sh
Linux中要查看硬盤緩存大小,可以使用hdparm命令。 1、在終端中執(zhí)行如下命令。 sudo hdparm -I /dev/sdb2、執(zhí)行效果如下圖所示,其中cache/buffer size行即為緩存大校 說明:-I:直接讀取硬盤所提供的硬件規(guī)格信息,/dev/sdb指的電腦中的第二塊
文章標(biāo)題:linux數(shù)據(jù)緩存命令行 linux查看緩存數(shù)據(jù)
路徑分享:http://muchs.cn/article42/dohoeec.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供響應(yīng)式網(wǎng)站、網(wǎng)站收錄、服務(wù)器托管、移動(dòng)網(wǎng)站建設(shè)、網(wǎng)站設(shè)計(jì)公司、品牌網(wǎng)站建設(shè)
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)