如果你的伺服器經常報告記憶體不足,並且因記憶體不足而導致服務被強制終止,而在不增加實體記憶體的情況下,啟用 swap 交換區作為虛擬記憶體是一個不錯的選擇。我購買的 DigitalOcean VPS 只有 512M 的記憶體,基本上不夠用,好在 VPS 的主機使用的是 SSD,正常的讀寫速度都在 300MB/s 以上,啟用 swap 後性能提高了不少,特別是在處理消耗大記憶體的腳本方面。
創建交換區的原則:
- 創建的 swap 交換區大小應該大於實際物理記憶體的容量大小,但不要過大,以免造成硬碟空間浪費。
- 如果記憶體 IO 請求頻繁,而單一 swap 交換區 IO 隊列等待時間過長的話,可以多創建幾個 swap 交換區。
- 原則上優先在 IO 速度最快的設備上創建。
創建步驟:
- 創建 swap 交換區硬碟存儲用的空白文件。
#創建一個 1 個 G 的 SWAP 交換區空白文件
dd if=/dev/zero of=/swap bs=1M count=1024
通常創建物理記憶體 2~2.5 倍大小的文件作為交換區。
- 使用 mkswap 格式化文件為 swap 文件系統
mkswap -f /swap
#-f 使用文件作為 swap 交換區
- 啟用剛剛創建的 Swap 文件
swapon /swap
- 如果有必要可以設定開機自動啟用 swap 文件交換區,修改 /etc/fstab,增加一行
/swap swap swap defaults 0 0 #啟動即啟用 swap
- 如果不需要啟用 swap 或需要調整 swap 大小,可以使用 swapoff 命令關閉 swap。
swapoff /swap
關閉 swap 後刪除對應的 swap 文件即可刪除 swap 交換區,如需要調整 swap 交換區大小,從第一步開始重新創建即可。