伺服器記憶體不足導致崩潰時可以配置Swap交換空間
檢查系統的Swap信息
首先我們需要檢查系統的存儲,看看是否已經配置過swap。一個系統可以設置多個swap文件或分區,不過一般來說一個就夠了。
使用swapon命令可以檢查系統是否已經配置過swap,這是一個通用的swap工具。使用-s標籤可列出當前存儲設備上的swap使用情況:
或者,我們也可以使用free工具來查看系統的整體內存使用情況,這裡可以看到內存和swap的使用狀態
創建Swap文件
接下來我們將在文件系統上創建swap文件。我們要在根目錄(/)下創建一個名叫swapfile的文件,當然你也可以選擇你喜歡的文件名。該文件分配的空間將等於我們需要的swap空間。
文件大小建議配置為 記憶體的兩倍 ,我伺服器記憶體大小為2G 文件就配置4G
該文件的讀寫都只有root才能操作。使用ls -lh命令檢查一下:
-rw------- 1 root root 4.0G Apr 15 18:01 /swapfile
Make Swap交換- 現在使用mkswap命令make swap交換可用文件。
Filename Type Size Used Priority /swapfile file 4194300 60 -1
使Swap文件永久生效 至此我們已經在系統中啟用了swap文件,然而一旦系統重啟後,服務器還不能自動啟用該文件。要讓系統在重啟後自動生效swap,我們可以通過修改fstab文件來實現(這是一個管理文件系統和分區的表)。
用sudo權限打開該文件編輯:
編輯完成後,保存退出,之後服務器每次重啟的時候會將swappiness設置為該值。
檢查系統的Swap信息
首先我們需要檢查系統的存儲,看看是否已經配置過swap。一個系統可以設置多個swap文件或分區,不過一般來說一個就夠了。
使用swapon命令可以檢查系統是否已經配置過swap,這是一個通用的swap工具。使用-s標籤可列出當前存儲設備上的swap使用情況:
swapon -s如果該命令沒有返回出結果,則代表該系統尚未配置過swap。
或者,我們也可以使用free工具來查看系統的整體內存使用情況,這裡可以看到內存和swap的使用狀態
創建Swap文件
接下來我們將在文件系統上創建swap文件。我們要在根目錄(/)下創建一個名叫swapfile的文件,當然你也可以選擇你喜歡的文件名。該文件分配的空間將等於我們需要的swap空間。
文件大小建議配置為 記憶體的兩倍 ,我伺服器記憶體大小為2G 文件就配置4G
dd if=/dev/zero of=/swapfile bs=1024 count=4096k接著設置權限
chmod 600 /swapfileswap文件的權限,確保只有root才可讀,否則會有很大的安全隱患。
該文件的讀寫都只有root才能操作。使用ls -lh命令檢查一下:
ls -lh /swapfile顯示結果如:
-rw------- 1 root root 4.0G Apr 15 18:01 /swapfile
Make Swap交換- 現在使用mkswap命令make swap交換可用文件。
mkswap /swapfile啟用交換- 現在使用swapon命令安裝系統交換。
swapon /swapfile現在,再次檢查交換是否啟用。
sudo swapon -s你會看到的結果類似下面
在文件末尾加入下面這行內容,告訴操作系統自動使用剛才創建的swap文件:sudo vim /etc/fstab
/swapfile swap swap sw 0 0添加完畢後,保存退出。以後伺服器每次重啟都會檢查該文件並自動啟用swap。
更改Swap配置(可選)
有幾個涉及swap的選項可能會影響到系統的性能表現。大部分情況下這些選項是可選的,具體要修改成什麼樣則取決於你的應用需求以及個人偏好。
Swappiness
swappiness
參數決定了系統將數據從內存交換到swap空間的頻率,數值設置在0到100之間,代表系統將數據從內存交換到swap空間的力度。
該數值越接近於0,系統越傾向於不進行swap,僅在必要的時候進行swap操作。由於swap要比內存慢很多,因此減少對swap的依賴意味著更高的系統性能。
該數值越接近於100,系統越傾向於多進行swap。有些應用的內存使用習慣更適合於這種情況,這也於服務器的用途有關。
輸入如下命令查看當前的swappiness數值:
- 1
- 2
- 3
- 4
- 5
CentOS 7默認設置了30的swappiness,這對於大部分桌面系統和本地服務器是比較中庸的數值。對於VPS系統而言,可能接近於0的值是更加合適的。
使用
sysctl
命令可以修改swappiness。比如將swappiness設為10:- 1
- 2
- 3
- 4
- 5
本次修改將一直生效到下次重啟前。如果希望永久修改該數值,則需要編輯
sysctl
配置文件:- 1
- 2
將以下內容粘貼到文件末尾:
- 1
- 2
編輯完成後,保存退出,之後服務器每次重啟的時候會將swappiness設置為該值。
留言
張貼留言