小型伺器記憶體不足解決方案 –AWS EC2 伺服器設定swap交換空間

我自己喜歡架設各種網路服務供自己自娛自樂,在一台AWS EC2虛擬機上上架設了 Nextcloud, WordPress, Postfix, Dovecot, MariaDB, Nginx, 等等的服務。由於我的機器只有1GB的ram, 常常會碰到記憶體不足MariaDB資料庫崩潰的情況。這時如果設定好swap交換空間,就能大大降低服務中斷的情況。雖然使用硬碟當成swap會降低快取的效能,不過因為是自用,這點效能降低換取服務不中斷,還是很划算的!

首先,你要在EC2 頁面上新增個磁盤空間,大小就設定為記憶體的兩倍就好。像我就是設成2GB。 接下來請把這個新建好的空間掛載(attach)到你的伺服器上。這些設定都在EC2 的界面上就能操作完成,我就不多展示了。

這時用SSH連線進入你的純文字後台,輸入

lsblk

你就會看見你新增的磁區

NAME        MAJ:MIN RM  SIZE RO TYPE MOUNTPOINTS

nvme0n1     259:0    0    2G  0 disk
nvme1n1     259:1    0   15G  0 disk
└─nvme1n1p1 259:2    0   15G  0 part /

這是我的例子,其中nvme0n1就是我新增要用作SWAP的磁區。這時請輸入

sudo mkswap /dev/nvme0n1

其中nvme0n1請代換成你新增磁區的代號

然後再輸入

sudo swapon /dev/nvme0n1

如果這時你用 lsblk 看到

NAME        MAJ:MIN RM  SIZE RO TYPE MOUNTPOINTS

nvme0n1     259:0    0    2G  0 disk [SWAP]

在MOUNTPOINTS 有看到[SWAP] 就表示你已經將新增的磁區掛載上了。

此時你可以用 top 指令來看看是否swap有在運作

top

如果你看到下面這一行就代表成功了

MiB Swap:   2048.0 total,   2030.5 free,     17.5 used.    235.1 avail Mem

其中total 前面要顯示你新掛載磁區的大小才是正確的,掛載失敗total會顯示0

最後你要將開機就掛載設定好。

這時最好使用UUID 來掛載磁區,請用以下指令來查你剛掛上的磁區的UUID

sudo blkid

找到你剛掛上的磁區的UUID

接著請輸入

sudo nano /etc/fstab

並新增下面這一行

UUID=”YOURUUIDHERE” none swap sw 0 0

Ctrl + X 存檔。

這裡記得把雙引號中間的字串改成你自己的UUID,不然每次重開機都會出問題。

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *

這個網站採用 Akismet 服務減少垃圾留言。進一步了解 Akismet 如何處理網站訪客的留言資料