[GCloud] WordPress 網站突然反應很慢,記憶體不足啦!
今天家人說在 Google Cloud Platform 上的 WordPress 網站,
突然變得很慢,連不進去…
試了一下,果真如此,是怎麼一回事呢?
用 Google Cloud Platform 上的 SSH 連進虛擬機器,
先用 sudo apt-get install atop 安裝一下 atop,
再執行 atop 看一下系統狀況~
發現記憶體和磁碟 I/O 出現紅字,記憶體剩約 123 MB,
而磁碟 I/O 讀寫很忙,一秒鐘有 123 個讀取,且持續不停:
觀察 Google Cloud Platform 上 Compute Engine 提供的圖表,
可以看到 CPU 使用率突然飆高,且持續在高點。
其實如果點 1 小時或 6 小時的圖表來看的話,
甚至可以看到有好幾個小時的時間,
CPU 使用率都超過了 100% (也就是吃超過 1 顆 CPU 了):
從 atop 的結果來看,造成 CPU/磁碟使用率升高的禍首,
應該是 mysqld 或 php-fpm 這兩支 process。
試著執行下面的指令重啟它們,但重啟後狀況依舊:
sudo /opt/bitnami/ctlscript.sh restart mysql sudo /opt/bitnami/ctlscript.sh restart php-fpm
將整個 Bitnami (包含 Apache, MySQL, PHP) 全部重啟也一樣:
sudo /opt/bitnami/ctlscript.sh restart
決定一一排除看看…
先試著 ctlscript.sh stop php-fpm 停掉 php-fpm 這支 process,
結果 mysqld 這支 process 一樣狂讀寫硬碟…
把 mysqld 也停掉的話,就回復正常,atop 上也沒有紅字了…
推測是有什麼東西一直在讀寫資料庫,
但從 mysql 的記錄檔裡沒看到什麼 (可能是因為 log level 太高)…
因為家人的 WordPress 網站已經掛站一個下午,
沒有太多時間查出問題點,只好按 Google Cloud Platform 上的建議,
將機器從最低階的 f1-micro 升級到高一階的 g1-small:
- f1-micro:0.2 顆 vCPU + 0.6 GB 記憶體
- g1-small:0.5 顆 vCPU + 1.7 GB 記憶體
更換機器等級後,Google Cloud Platform 會自動處理,
猜測是會關閉虛擬機器、修改虛擬機器的設定、再重新啟動虛擬機器,
大約 5~10 分鐘內,新的虛擬機器就可以用了,
之前設定好的外部 IP 也仍然維持一樣,因此 DNS 那邊也不用修改~
升級機器之後,磁碟 I/O 忙碌的問題消失了~
感覺上之前是 mysql 在讀寫什麼東西到資料庫,但因為記憶體不夠 (0.6 GB),
導致它一直在做 swapping,將記憶體的東西寫到硬碟去,
所以磁碟 I/O 才會變得很忙…
如下圖,綠色的框框是升級機器後的 CPU 使用率,
可以看到升級後使用率立刻掉了下來:
atop 的結果也沒有紅字了~
唯一的紅字是 SWP,看起來這機器上是沒有設定 swap 的空間,
不過有 1.7 GB 的記憶體,應該也比較不會輕易達到記憶體不足的狀況:
不過升級機器,當然會讓支出增加,
但幸好目前還在 Google Cloud Platform 給的一年 300 美金免費使用期內,
所以還可以像這樣隨意的升級機器 😛
還是得花時間研究一下,要怎麼查找 PHP 和 MySQL 的效能問題啊~