[Linux] 新增虛擬記憶體(Swap)

今天把 GCP 的記憶體調整縮小,立馬發生 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

檢查發現 GCP 建立的時候沒有幫我開啟 Swap,然後我又把規格調整到最低的 f1-micro 才引發此問題。

新增 Swap 的步驟如下:

  1. 建立虛擬記憶體用的檔案並設定啟動
    sudo dd if=/dev/zero of=/swapfile bs=1M count=1024
    sudo mkswap /swapfile
    sudo swapon /swapfile
  2. 修改檔案權限
    sudo chmod 600 /swapfile
  3. 修改 `/etc/fstab` 加入開機啟用
    /swapfile swap swap defaults 0 0
  4. `free` 可以查看目前記憶體使用狀況
                  total        used        free      shared  buff/cache   available
    Mem:        1736424     1007616      365780        8804      363028      521744
    Swap:       1048572           0     1048572
  5. 關閉虛擬記憶體
    swapoff -v /swapfile


這裡的資訊對您有用嗎?歡迎斗內給我