[DigitalOcean] 如何為ram不足的空間建立swap
本文使用 Ubuntu 16.04 LTS
前言
提高server的回應速度和防止應用程序記憶體不足錯誤的最簡單方法之一,是加入一些swap。 在本文中,我們將介紹如何在Ubuntu 16.04中新增swap 請確認使用root登入,或使用sudo操作
警告 若server使用SSD硬碟,使用swap可能會導致硬體加速退化的問題, 因此建議在server儲存裝置hdd的情況再使用swap
加入swap
- 確認目前是否有建立swap
$ sudo swapon --show
- 確認目前空間
$ free -h total used free shared buff/cache available Mem: 488M 36M 104M 652K 348M 426M Swap: 0B 0B 0B
- 查看分區
$ df -h Filesystem Size Used Avail Use% Mounted on udev 238M 0 238M 0% /dev tmpfs 49M 624K 49M 2% /run /dev/vda1 20G 1.1G 18G 6% / tmpfs 245M 0 245M 0% /dev/shm tmpfs 5.0M 0 5.0M 0% /run/lock tmpfs 245M 0 245M 0% /sys/fs/cgroup tmpfs 49M 0 49M 0% /run/user/1001
/dev/vda1 就是目前主要分區,我們會從中切割一部分作為swap分區
- 建立分區
$ sudo fallocate -l 1G /swapfile
由於本範例中的server僅有512MB的RAM,因此我們建立一個1GB的swap。 (swap大小可依需求做調整)
- 驗證分區
$ ls -lh /swapfile -rw-r--r-- 1 root root 1.0G Apr 25 11:14 /swapfile
- 修改分區權限
$ sudo chmod 600 /swapfile $ ls -lh /swapfile -rw------- 1 root root 1.0G Apr 25 11:14 /swapfile
- 設定分區為swap
$ sudo mkswap /swapfile Setting up swapspace version 1, size = 1024 MiB (1073737728 bytes) no label, UUID=6e965805-2ab9-450f-aed6-577e74089dbf
- 啟用swap
$ sudo swapon /swapfile
- 驗證swap是否啟用
$ sudo swapon --show
設定自動啟用swap
- 備份fstab
$ sudo cp /etc/fstab /etc/fstab.bak
- 把swap加入fstab
$ echo '/swapfile none swap sw 0 0' | sudo tee -a /etc/fstab
優化設定
- 查詢目前Swappiness設定
$ cat /proc/sys/vm/swappiness 60
對於desktop版本的linux,60的swappiness設置還不錯 但是對server版本來說,盡可能接近0是比較理想的
- 調整Swappiness設定
$ sudo sysctl vm.swappiness=10 vm.swappiness = 10
- 設定重開機時自動啟動
$ sudo nano /etc/sysctl.conf
在文件尾端加入
vm.swappiness=10
存檔
- 調整Cache Pressure設定
$ cat /proc/sys/vm/vfs_cache_pressure 100
因為100會太快把索引的節點從系統cache刪除,保守一點則需要調低一些
- 調整Cache Pressure為50
$ sudo sysctl vm.vfs_cache_pressure=50 vm.vfs_cache_pressure = 50
- 設定開機時自動啟動
$ sudo nano /etc/sysctl.conf
在文件尾端加入
vm.vfs_cache_pressure=50
存檔
參考
留言