[WordPress] 解決不定時就會出現 “Error Establishing a Database Connection” 連不到資料庫的問題

我本身有一個用 WordPress Woocommerce 建置的電商平台,就在前陣子為了追求執行速度,我從原本的 Google Cloud Platform(GCP) 的免費方案的伺服器搬家到 Vultr。搬家的過程也沒遇到很多大問題,以為這件事情就這樣順順利利的結束了,想不到新的伺服器運作了差不多 1~2 天後突然出現 “Error Establishing a Database Connection” 的錯誤訊息。

這錯誤不是一開始就會立馬出現,而是要運作一段時間才會有機率出現。為了解決連線不到資料庫的問題,我嘗試把一個一個外掛關掉,看看是不是因為外掛的原因 ,結果都不是。之後我往 Linux 的 Log 查原因,看到了系統砍掉了 SQL 的程式。因為我的 RAM 不足的關西導致系統為了維持運作的穩定性會先砍佔 RAM 比較較高的程式,才會有系統要運作一段時間才會出現錯誤的狀況發生。

诶 RAM 怎麼會不夠? 之前在 GCP 只有 0.6G RAM 還不是運作的好好的,我換到 1G RAM 反而會不夠?我就開始查 GCP 的系統配置跟我現在的系統有甚麼差異,最後發現原來 GCP 的 Linux 有開啟 Swap(虛擬記憶體),而我現在的系統 Swap 是被關閉的,才會有 RAM 不足的狀況。

知道原因之後就好解決的,只要開啟 Swap 一切就 OK 囉~

開啟 Swap

建立 Swap 檔案,count 後面的參數就是你要建立的大小,這邊範例是建立 1G 的 Swap。

sudo dd if=/dev/zero of=/swapfile bs=1K count=1M

建立檔案後,需要把檔案格式化成 swap 的檔案。

sudo mkswap /swapfile

啟動 Swap 的掛載

sudo swapon /swapfile

開機後自動啟動 Swap
需要到 /etc/fstab 裡面去新增下面這行,這樣開機才會自動掛載

/swapfile swap swap defaults 0 0

直接打 free 有看到 Swap 有剛剛設定的容量的話就代表設定成功囉!

關閉 Swap 指令

sudo swapoff -v /swapfile

有話大聲說!