1 我的系統是Centos6.x 記憶體有32G,按理來說應該配置設定swap分區為8G但,但是由于曆史原因,這個配置設定的swap分區為4G,但是這個機器上跑了mysql,占用了swap分區為1G多,導緻swap消耗一般以上,zabbix監控一直在報警,是以要加大swap分區!前提是要把這個swap給下了,首先要将swap分區dump到記憶體中去!
步驟:
第一
sync 将系統緩沖區同步到磁盤中去
<code>sync</code>
第二:
<code>echo</code> <code>"3"</code> <code>> </code><code>/proc/sys/vm/drop_caches</code>
解釋:是釋放cache的操作!
As this is a non-destructive operation, and dirty objects are not freeable, the user should run "sync" first in order to make sure all cached objects are freed.
預設是0
第三:disable all swaps
<code>swapoff -a</code>
第四:用檔案作為Swap分區
1.建立要作為swap分區的檔案:增加1GB大小的交換分區,則指令寫法如下,其中的count等于想要的塊的數量(bs*count=檔案大小)。
<code>dd</code> <code>if</code><code>=</code><code>/dev/zero</code> <code>of=</code><code>/root/swapfile</code> <code>bs=1G count=8</code>
2.格式化為交換分區檔案:
<code>mkswap </code><code>/root/swapfile</code>
#建立swap的檔案系統
3.啟用交換分區檔案:
<code>swapon </code><code>/root/swapfile</code>
#啟用swap檔案
4.使系統開機時自啟用,在檔案/etc/fstab中添加一行:(将以前的注釋掉)
/root/swapfile swap swap defaults 0 0
第五:還原使用cache的模式
<code>echo</code> <code>"0"</code> <code>> </code><code>/proc/sys/vm/drop_caches</code>
真實環境中,發現mysql自動重新開機了,3306有down了一會,且程序有重新啟動過,然後是自動的,懷疑是swap被全部dump到記憶體中,而記憶體不足導緻! 或者mysql沒使用到swap會down,因為mysql配置原因吧,我也沒有深入研究它!
閱讀:
To free pagecache:
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
本文轉自殘劍部落格51CTO部落格,原文連結http://blog.51cto.com/cuidehua/1773203如需轉載請自行聯系原作者
cuizhiliang