【Linux】使用swap分區解決內存不足問題

使用swap分區解決內存不足問題


參考於阿里雲文檔:雲服務器 ECS Linux SWAP 配置概要說明

開啓 SWAP

1、創建用於交換分區的文件:

注:虛擬內存大小建議爲物理內存的1.5倍

# dd if=/dev/zero of=/mnt/swap bs=1M count=8192   //創建8g虛擬內存 bs=block_size count=number_of_block  

等待稍長時間後輸出

8192+0 records in
8192+0 records out
8589934592 bytes (8.6 GB) copied, 55.5164 s, 155 MB/s

2、設置交換分區文件:

# mkswap /mnt/swap

完成後提示

Setting up swapspace version 1, size = 8388604 KiB
no label, UUID=23b4b66c-ef48-4a8a-a8dd-f9e977287932

3、立即啓用交換分區文件:

# swapon /mnt/swap

是free指令查看是否生產swap分區

[root@izj6c47bc02i5akvuyb8xzz target]# free -m
              total        used        free      shared  buff/cache   available
Mem:           1839         506          62          24        1270        1137
Swap:          8191           0        8191

注:如果在 /etc/rc.local 中有 swapoff -a 需要修改爲 swapon -a

4、設置開機時自啓用 SWAP 分區:

需要修改文件 /etc/fstab 中的 SWAP 行

# vim /etc/fstab

末尾添加 /mnt/swap swap swap defaults 0 0

# /etc/fstab
# Created by anaconda on Fri Aug 18 03:51:14 2017
#
# Accessible filesystems, by reference, are maintained under '/dev/disk'
# See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info
#
UUID=59d9ca7b-4f39-4c0c-9334-c56c182076b5 /                       ext4    defaults        1 1
/mnt/swap swap swap defaults 0 0

注:/mnt/swap 路徑可以修改,可以根據創建的 SWAP 文件具體路徑來配置。

5、修改 swpapiness 參數

在 Linux 系統中,可以通過查看 /proc/sys/vm/swappiness內容的值來確定系統對 SWAP 分區的使用原則。當 swappiness 內容的值爲 0 時,表示最大限度地使用物理內存,物理內存使用完畢後,纔會使用 SWAP 分區。當 swappiness 內容的值爲 100 時,表示積極地使用 SWAP 分區,並且把內存中的數據及時地置換到 SWAP 分區。

查看修改前爲 0,需要在物理內存使用完畢後纔會使用 SWAP 分區:

  • 臨時修改

假設我們配置爲空閒內存少於 10% 時才使用 SWAP 分區:

echo 10 >/proc/sys/vm/swappiness
  • 永久修改

若需要永久修改此配置,在系統重啓之後也生效的話,可以修改 /etc/sysctl.conf 文件,並增加以下內容:

# vim /etc/sysctl.conf

將配置文件中的vm.swappiness屬性值改爲10vm.swappiness=10

# sysctl -p

關閉 SWAP

當系統出現內存不足時,開啓 SWAP 可能會因頻繁換頁操作,導致 IO 性能下降。如果要關閉 SWAP,可以採用如下方法。

1、free -m 查詢 SWAP 分區設置:

[root@izj6c47bc02i5akvuyb8xzz target]# free -m
              total        used        free      shared  buff/cache   available
Mem:           1839         506          62          24        1270        1137
Swap:          8191           0        8191

2、使用命令 swapoff 關閉 SWAP,比如:

swapoff /mnt/swap  

3、修改 /etc/fstab 文件,刪除或註釋相關配置,取消 SWAP 的自動掛載:

# /etc/fstab
# Created by anaconda on Fri Aug 18 03:51:14 2017
#
# Accessible filesystems, by reference, are maintained under '/dev/disk'
# See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info
#
UUID=59d9ca7b-4f39-4c0c-9334-c56c182076b5 /                       ext4    defaults        1 1
#/mnt/swap swap swap defaults 0 0

4、 通過 free -m 確認 SWAP 已經關閉。

[root@izj6c47bc02i5akvuyb8xzz target]# free -m
              total        used        free      shared  buff/cache   available
Mem:           1839         506          62          24        1270        1137
Swap:             0           0           0

5、 swappiness 參數調整:

可以使用下述方法臨時修改此參數,這裏配置爲 0%:

echo 0 >/proc/sys/vm/swappiness    

若需要永久修改此配置,在系統重啓之後也生效的話,可以修改 /etc/sysctl.conf 文件,並增加以下內容:

# vim /etc/sysctl.conf

設置vm.swappiness=0

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