1. 程式人生 > >Linux的 VPS 上設定虛擬記憶體 (Swap)

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

透過 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.

執行指令的畫面:

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

透過指令:

free -h

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

立馬檢視峰哥的技術日誌:

設定 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.

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

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

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

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. 無法使用桌面版本的編輯器,只能使用網頁版。