Linux的 VPS 上設定虛擬記憶體 (Swap)

由於之前部落格的文章都被刪了,所以切換寫作環境到 WordPress,在 DigitalOcean 的 VM(或稱為VPS,虛擬主機)上架設WordPress網站,是滿快的,一下子就設好了,但用了幾天之後,會一直出現:「無法連到資料庫」的錯誤訊息。

 

 

透過 SSH 連到 VM 裡之後,下指令:

mysql -u root

指令執行結果是:無法連上 mysql 資料庫。

 

下指令:

ps -aux | grep mysql

發現,mysql 沒有在記憶體裡執行中。

 

下指令:

/etc/init.d/mysql start

顯示錯誤訊息:

Checking for tables which need an upgrade, are corrupt or were not closed cleanly.

 

再下指令:

less /var/log/syslog | grep mysql

發現是記憶體不足,由於是 VM,而且是DigitalOcean 裡最便宜的付款方案,所以只有512MB的RAM.

執行指令的畫面:

Screenshot 2016-05-18 18.01.33

syslog 裡說,Out of memory: Kill process mysqld.

 

透過指令:

free -h

得知,即使mysql deamon 沒有在執行,剩下的 RAM  只有  92MB 可以使用。

 

立馬查看峰哥的技術日誌:

http://fonger.logdown.com/posts/2015/02/01/setting-swap-for-ubuntu-to-solve-out-of-memory

 

 

設定 Swap File 的指令:

cd /var
fallocate -l 1G swapfile
chmod 600 swapfile

mkswap /var/swapfile
swapon /var/swapfile

執行完,這幾行就有 swap 了,接著執行這一行,讓開機都自動啟用swap:

echo “/var/swapfile none swap sw 0 0″ >> /etc/fstab

 

進伺服器裡,執行 reboot,開機後,再執行  free -h 指令,已經可以看到有 swap.

Screenshot 2016-05-18 18.05.34

 

但設完 swap 只能多撐2分鐘而已…, 過沒多久還是記憶體被用完,再研究這一篇:

WordPress server that worked flawlessly for months now runs out of memory and crashes for no apparent reason. How to troubleshoot and fix?
https://www.digitalocean.com/community/questions/wordpress-server-that-worked-flawlessly-for-months-now-runs-out-of-memory-and-crashes-for-no-apparent-reason-how-to-troubleshoot-and-fix

似乎大家都會遇到  @_@:

 

按照這一篇的指示,關掉 xml-rpc:

How To Protect WordPress from XML-RPC Attacks on Ubuntu 14.04

https://www.digitalocean.com/community/tutorials/how-to-protect-wordpress-from-xml-rpc-attacks-on-ubuntu-14-04


  • sudo nano /etc/apache2/sites-available/000-default.conf

Add the highlighted lines below between the <VirtualHost> tags.

Apache VirtualHost Config
<VirtualHost>
…    
    <files xmlrpc.php>
      order allow,deny
      deny from all
    </files>
</VirtualHost>

Save and close this file when you are finished.

Restart the web server to enable the changes:

  • sudo service apache2 restart

 

關掉後,透過 ps -aux, 看apache process 少掉超多的!再透過 free -h 來看,發現即使過了很久,都不會使用到 swap…,所以會掛掉的主因是 xml-rpc

Screenshot 2016-05-18 19.13.12

 

關掉 XML-RPC 有2個主要的問題:

  1. wordpress plugins 無法 auto upgrade.
  2. 無法使用桌面版本的編輯器,只能使用網頁版。

 

相關文章

新增留言