c0d3man52

Webサイト制作

[WordPress] GCPの無料サーバー(GCE)でKUSANAGIサーバーとKUSANAGI Runs on Dockerの速度を比べる

「WordPressは重い」というイメージを覆したKUSANAGI。どうせなら、無料サーバーで使えないかなぁと思っていたところ、Google Cloud Platform(以下GCP)でも使えるDockerイメージを見つけたので速度比較してみました。

更新日: 2019.12.12公開日: 2017.8.24

テスト条件

大前提として

長期運用を前提として、GCPのAlways Free(いつまでも無料)枠での運用を想定しているため、使うサーバーはGCPの中でも最弱のf1-micro(1vCPU、0.6GBメモリ)としています。

f1-microは、LINUXサーバーのベンチマークで知られるUNIXBENCHのスコアが300台と、劇遅サーバーです。(さくらVPS 1GBやConoha VPS 1GBなどは、UNIXBENCHは2000-2500ほど)

一方、公式ページ・KUSANAGI for GCPにも記載されている通り、KUSANAGIが推奨する環境はメモリ4GB以上のサーバーです。

また、KUSANAGIは本来はキャッシュが魅力な仮想イメージなのでキャッシュを使いたいところですが、キャッシュをすると、テストページ1枚の場合サーバーへの負荷のかかり具合がわかりづらいので、今回はキャッシュオフにしました。

ということで、そもそも無茶な環境でのテストなのでその点をご理解ください。

テスト条件

  • どちらもサーバーはGCPで無料で使えるf1-micro(us-central)
  • 負荷テストには、loadimpact.comを利用する
  • KUSANAGIのBCACHE、FCACHEは切る
  • 負荷テストはデフォルトの「Hello World」記事
  • プラグインなどを入れていないプレーンな状態のWordPress

なお、DBがKUSANAGIサーバーのほうはMYSQLで、KUSANAGI Runs on DockerのほうはMariaDBという違いがあります。

KUSANAGIサーバー on GCP 負荷テスト結果

まずは、KUSANAGIイメージからセットアップしたサーバーです。

ロード時間

プラグインなどを入れるとさらに重くなるはずなので、これは実用的ではなさそうです。

CPU使用率

わかりずらいんですが、青いポインターがおいてある「負荷28%」あたりが負荷テスト中の値です。そこまでCPU負荷は高くないですね。

CPU負荷が高くないとなると、MYSQLあたりでディスクスピードがネックになっているのかもしれません。

また、チューニング的なことは何もせず、KUSANAGI公式チュートリアルに沿って進めただけなので、チューニングをすればもっと速度がでる可能性は十分にあります。

KUSANAGI Runs on Docker on GCP 負荷テスト結果

さて、続いてKUSANAGI Runs on Docker。こちらは、ベースイメージにGoogleが作っているコンテナ運用イメージ「Container-Optimized OS from Google」を使いました。

KUSANAGIのコンテナは、KUSANAGI Runs on Docker公式のdocker-compose.ymlを使っています。ただし、Container-Optimized OS from Googleでは、docker-composeではなく、Kubernetesを使う前提なのでそのままでは使えません。

こちらのGoogle公式ガイドの方法で、docker-composeコンテナを立ち上げて使う形になります。

ロード時間

圧倒的に速いですね。アメリカ同士の通信とはいえ、0.3秒ほどというのはかなり速い部類に入るでしょう。日本に向けてデータ転送をしても、遅くても0.7秒くらいでしょうか。これならチューニング次第で1秒以内も目指せそうです。

CPU使用率

CPU負荷は一番右側の山になっているところ。MAXで10数%という安定感。負荷テスト中にWordPressの管理画面を触っていても、負荷がかかっている感じが全くしませんでした。


GCP無料枠で使うならKUSANAGI Runs on Dockerのが良さそう

チューニングなどをしていない条件ですが、KUSANAGI Runs on DockerならGCPの無料枠でもWordPressサーバーを運用できそうです。ただ、GCPでのKUSANAGI Runs on Dockerはいろいろと課題があるんですよね。それは、解決したらまとめたいと思います。