今天把 GCP 的記憶體調整縮小,立馬發生 MySQL 崩潰的問題,大膽判斷此問題與記憶體有關,檢查了一下 LOG 果真如此
1 2 3 |
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 的步驟如下:
- 建立虛擬記憶體用的檔案並設定啟動
123sudo dd if=/dev/zero of=/swapfile bs=1M count=1024sudo mkswap /swapfilesudo swapon /swapfile - 修改檔案權限
1sudo chmod 600 /swapfile - 修改
/etc/fstab
加入開機啟用
1/swapfile swap swap defaults 0 0 free
可以查看目前記憶體使用狀況
123total used free shared buff/cache availableMem: 1736424 1007616 365780 8804 363028 521744Swap: 1048572 0 1048572- 關閉虛擬記憶體
1swapoff -v /swapfile