自己的騰訊雲服務器搭建的zabbix監控中,提示Lack of free swap space
騰訊的官方說明在這:
https://cloud.tencent.com/document/product/362/3597
查看機器上面狀態如下:
Linux下可以創建兩種類型的交換空間,一種是swap分區,一種是swap文件。前者適合有空閑的分區可以使用,后者適合於沒有空的硬盤分區,硬盤的空間都已經分配完畢,這里我們只能采用后者。
服務器的物理內存是2G的,按照1~2倍原則,我將swap文件設置為4GB。
新建的4G swap路徑:/mnt/swap(路徑和交換文件名稱可以自定義)
步驟如下:
1、創建用於交換分區的文件:dd if=/dev/zero of=/mnt/swap bs=4096 count=1024000(這條命令運行完后稍等一會)
2、設置交換分區文件:mkswap /mnt/swap
3、啟用交換分區文件:swapon /mnt/swap
注:dd創建的文件總大小等於bs * count。本例是4096k * 1024000=4G。
注釋:
dd:可以創建指定大小(4G)的文件
if:指定輸入設備
/dev/zero:無限0資源
of:指定輸出設備
bs:每個塊的大小
count:塊的數量
=========以下操作能確保 swap 更安全,且重啟后有效===========
查看 vim /etc/rc.local 如果有 swapoff -a 修改為 swapon -a,我這里是沒有這個的,就不管了。
vim /etc/rc.local
設置自動掛載,打開文件:vim /etc/fstab
把下面命令添加到最下面的空行。
/mnt/swap swap swap defaults 0 0
查看狀態
swapon -s
查看內存狀態
free -m
當不需要交換文件時,可以使用以下步驟將其刪除:
禁用交換文件:swapoff /mnt/swap
刪除交換文件:rm -f /mnt/swap
編輯vim /etc/fstab文件,刪除以下內容,在系統下次引導時就不會啟用交換文件了。
/mnt/swap swap swap defaults 0 0
權限設置:
chown root:root /mnt/swap
chmod 0600 /mnt/swap
查看 swappiness 值。
cat /proc/sys/vm/swappiness
如果為 0 ,則將其改為 10,意思是空閑內存少於 10% 時才使用 SWAP 分區
sysctl vm.swappiness=10
永久設置 swappiness,如果該文件里沒有,則打開 vim /etc/sysctl.conf 配置文件追加 vm.swappiness = 10
重啟,那些永久設置項就生效了。
swappiness=0 的時候表示最大限度使用物理內存,然后才是 swap 空間,swappiness=100 的時候表示積極的使用 swap 分區,並且把內存上的數據及時的搬運到 swap 空間里面。
參考文章: