WordPressサーバーをスケールアップ・アウトしてみた

Linux Server

何をしたか

  • さくらのVPSのプランを1GBから2GBに変更
  • データベースを別サーバーへ分離

WAFを導入しているのですが推奨メモリが2GB以上なのと、多少は余力がほしいので試験的に増強してみました。メモリが1GBから2GBに、CPUが2コアから3コアにアップしています。

データベースを分離したのは負荷分散が目的で、DBサーバーを別に立てるというのは業務であれば普通にやることではありますが。

更新前の状態

さくら1GBプランのtopとfreeの数字です。

スワップの使用領域が365MBあります。メモリのfreeも74MBと心許ないですね。

topコマンドを実行した時の状態はこちら。Webサーバーの負荷があるのは当然として、Fail2ban、MySQLもリソース消費の上位に来ます。

スケールアップ・アウト後の状態

さくらのVPS 2GBプランに更新後のWebサーバーの状態はこちら。

メモリスワップの使用量がゼロになりましたね。メモリ使用量が877MBもあるので、更新前の状態だとメモリがひっ迫していたことが分かります。

分離したデータベースサーバーの状態はこちら。まぁ、平穏ですね。いかんせんMySQLしかありません。所詮は100記事程度のWordPressブログです。

サイト読込時間は変化したか?

これも変化するのか気になったので、実験してみました。いくつかのサービスで検証してみています。

PageSpeed Insights

更新前の状態(上がモバイル、下がPC)

更新後の状態(上がモバイル、下がPC)

……ん? むしろ数字悪くなってる?

Web Page Performance Test

更新前の状態

更新後の結果

少し読込が早くなった程度? “First Byte”は最初のデータが到達するまでの時間ですが、0.1秒早くなったらしい。

所感

体感的には少し早くなった気はしていますが(WordPressの管理画面に入った時は特に)、読込速度のテスト結果を見るに、実はあまり変わっていない…のでしょうか。でも、メモリのスワップが解消されているので、メモリ・ディスク間のI/Oは減少しているはずで、何も変わっていないということはなさそうです。

さくらのVPSは契約後の最初2週間が試用期間となり、この間はネットワークの帯域制限がかかります。ですが、Webサーバー・DBサーバー間は内部ネットワークを介した通信なので、そこも制限されるのか…は謎です。それとも別の理由によるものかもしれません。

しばらくは様子見をすることにしましょう。

更新作業で気になったところ

スケールアップ、速い

契約プランの変更(スケールアップ)は、一旦サーバーを停止→更新の申込み→更新作業の流れですが、5分もいかないくらいで終了しました。説明書きには「時間がかかる場合がある」とあったので、案外速かったです。

CentOSのネットワーク設定

まず、さくらのコントロールパネルで「スイッチ」を作成し、サーバーを停止してからスイッチを割り当てる必要があります。その後、CentOS側で静的IPを割り当てれば通信可能になる。

簡単に手順を記すと、

1.etc/sysconfig/network-scripts/ifcfg-[デバイス名]を開いて、設定値を記入(以下は例)。

DEVICE="デバイス名"
ONBOOT="yes"
TYPE="Ethernet"
IPADDR=192.168.100.1
NETWORK=192.168.100.0
NETMASK=255.255.255.0

2.設定を反映させる。

$ systemctl restart network

もしくは、

$ systemctl restart NetworkManager

Ubuntuも触るのだけど設定の仕方が違うのと、たまにしかやらないので、すぐに忘れてしまうのが難点ですね(手順書を残しておくとよいですが)。

MySQLからリモートで繋ぐ時

WebサーバーからDBサーバーへリモート接続する時、DBサーバー側でリモートサーバーからの接続を許可するように権限を付与してやる必要があります。

> GRANT ALL PRIVILEGES ON WORDPERSSDB.* TO USER@'Web Server IP Address' IDENTIFIED BY 'Password'

知りませんでした…。Oracleとは違うのですね。

当たり前ですが、事前にバックアップは取得し、ある程度手順を固めてから作業にかかるのが良いです(今回も一応そうしましたが)。

以上です。