原文鏈接:http://www.darrenfang.com/2014/01/modify-swap-on-ubuntu-12-04/
新安裝的Ubuntu 12.04 VPS內存爲512M,安裝完MySQL運行一段時間後會出現MySQL停止運行的情況,查看MySQL的錯誤日誌後發現是內存不足。然後用free命令查看系統內存,發現內存已基本耗盡,而且swap區大小爲0。由於網站訪問量並不大,暫時用增加swap區來解決內存不足的問題。
Digital Ocean提供了這方面的教程:How To Add Swap on Ubuntu 12.04
查看swap空間使用情況
sudo swapon -s
由於VPS上面沒有使用swap,得出的結果是一個空的列表:
Filename Type Size Used Priority
查看硬盤使用情況
df -lh
這是服務器上的輸出,可以看到還有17G的可用空間,有足夠的空間去分配swap空間了。
Filesystem Size Used Avail Use% Mounted on
/dev/vda 20G 2.1G 17G 11% /
udev 237M 12K 237M 1% /dev
tmpfs 99M 228K 98M 1% /run
none 5.0M 0 5.0M 0% /run/lock
none 246M 0 246M 0% /run/shm
創建並啓用swap文件
sudo dd if=/dev/zero of=/swapfile bs=1024 count=512k
這樣就創建了一個512M的swap文件,文件名是swapfile,放在根目錄下。如果想要更大的swap空間,可以將上述命令中的512改爲合適的值。 接着創建swap交換區。
sudo mkswap /swapfile
根據文件大小,需要稍等一會才能執行完畢。執行完後可以看到類似的輸出:
Setting up swapspace version 1, size = 262140 KiB
no label, UUID=103c4545-5fc5-47f3-a8b3-dfbdb64fd7eb
激活交換文件:
sudo swapon /swapfile
查看swap空間使用情況:
sudo swapon -s
激活成功後的輸出結果是:
Filename Type Size Used Priority
/swapfile file 524284 38936 -1
設置開機自動掛載swap文件
這樣設置完,重啓服務器後,swap交換區的信息將丟失。修改/etc/fstab文件可以實現開機自動掛載。
sudo vi /etc/fstab
在文件最下面添加:
/swapfile none swap sw 0 0
修改swappiness參數,提高swap交換區性能
echo 0 | sudo tee /proc/sys/vm/swappiness
echo vm.swappiness = 0 | sudo tee -a /etc/sysctl.conf
設置爲0後,swap僅在內存不足的時候纔會使用,這樣可以提高性能。
設置swap文件訪問權限
sudo chown root:root /swapfile
sudo chmod 0600 /swapfile
這樣只有root用戶才能對swap有讀寫權限。