[Linux] 新增虛擬記憶體(Swap)
今天把 GCP 的記憶體調整縮小,卻發生部落格一開就發生 SQL/">MySQL 崩潰的問題發生,大膽判斷此問題與記憶體有關,檢查了一下 LOG 果真如此
InnoDB: Initializing buffer pool, size = 128.0M InnoDB: mmap(137363456 bytes) failed; errno 12 InnoDB: Completed initialization of buffer pool InnoDB: Fatal error: cannot allocate memory for the buffer pool
看了一下top
才發現原來 GCP 建立的時候並沒有幫我開啟 Swap,然後我又把規格調整到最低的 f1-micro 才引發此問題。
新增 Swap 的步驟如下:
-
建立虛擬記憶體用的檔案並設定啟動
sudo dd if=/dev/zero of=/swapfile bs=1M count=1024 sudo mkswap /swapfile sudo swapon /swapfile
-
修改檔案許可權且啟用
sudo chmod 600 /swapfile
-
修改
/etc/fstab
加入開機啟用
/swapfile swap swap defaults 0 0
-
free
可以檢視目前記憶體使用狀況
total used free shared buff/cache available Mem: 1736424 1007616 365780 8804 363028 521744 Swap: 1048572 0 1048572
-
關閉虛擬記憶體
swapoff -v /swapfile