swap空間占用過高解決方案

1 簡介

Swap分區在系統的物理內存不夠用的時候,把物理內存中的一部分空間釋放出來,以供當前運行的程序使用。那些被釋放的空間可能來自一些很長時間沒有什么操作的程序,這些被釋放的空間被臨時保存到Swap分區中,等到那些程序要運行時,再從Swap分區中恢復保存的數據到內存中。

1.1 Linux的swap原理

1、 控制swap使用的系統參數:swappiness

Swappiness:表示使用物理內存限度
Swappiness為0(100%-0=100%)表示物理內存使用到100%的時候使用swap空間
Swappiness為60(100%-60%=40%)表示物理內存使用到40%的時候使用swap空間

如果swappiness設置太大(內存的速度會比磁盤快很多),這樣子會加大系統io,同時造的成大量頁的換進換出,嚴重影響系統的性能,所以我們在操作系統層面,要盡可能使用內存,對該參數進行調整。

2、 Linux默認swappiness

# cat /proc/sys/vm/swappiness

60

默認為60,也就是說當物理內存使用到40%的時候開始使用swap。

2 解決

2.1 調整swappiness參數

2.1.1 臨時調整

# sysctl vm.swappiness=10
vm.swappiness = 10
# cat /proc/sys/vm/swappiness
10

2.1.2 久調整

1、設置

# cat /etc/sysctl.conf
vm.swappiness=10

2、激活

#sysctl -p

2.2 增加swap空間

當以上方法無法解決問題,或者機器內存消耗大,添加內存,swap也要相應擴展。

1、 查看swap****空間

# free -m

total used free shared buff/cache available
Mem: 3791 1464 1112 30  1214 1998
Swap: 4095  175 3920

2、 查看/dev/zero

# df -h /dev/zero

Filesystem Size Used Avail Use% Mounted on
devtmpfs 1.9G 0 1.9G 0% /dev

此/dev/zero一共就1.9G所以添加swap空間不可以超過1.9G

解釋:/dev/zero也是一個偽文件,但它實際上產生連續不斷的null的流(二進制的零流,而不是ASCII型的)。寫入它的輸出會丟失不見,/dev/zero主要的用處是用來創建一個指定長度用于初始化的空文件,像臨時交換文件。可以用來創建swap。

3、 新建swap****分區空間

注意:創建好的交換文件不能刪除,所以要提前找到一個目錄。

# cd /home/

# mkdir -p swap

# cd /home/swap/

# dd if=/dev/zero of=swapfile bs=1M count=1024
1024+0 records in
1024+0 records out
1073741824 bytes (1.1 GB) copied, 1.0867 s, 988 MB/s

解釋:of為文件名。Bs為單個大小。Count為數量。我創建了一個1G的文件。

4、 mkswap****創建交換文件

# mkswap swapfile

Setting up swapspace version 1, size = 1048572 KiB
no label, UUID=18c17ff6-a584-4e74-8fba-ab0a39ae90e4

5、 swapon****激活

# swapon swapfile

swapon: /home/swap/swapfile: insecure permissions 0644, 0600 suggested.

6、 驗證

# free -m

total used free shared buff/cache available
Mem: 3791 1464 121  30  2205  1989
Swap:  5119   175 4944

7、 開機啟動

由于以上操作為臨時生效,服務器重啟會失效。所以要設置開機啟動。

#vi /etc/fstab

/home/swap/swapfile swap swapdefaults 0 0

8、 其他操作

a) 停用:swapoff swapfile

b) 刪除:rm –rf swapfile

c) 刪除隨即啟動swap:vi /etc/fstab

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。