はじめに
クラウド環境といえば、AWSやさくらのクラウドなどが定番ですが、Googleが提供しているGoogle Cloud Platformの拠点がアジアにもできたことで、Google Cloud Platformを日本のユーザが利用するケースが増えてきそうです。
Google Cloud Platformのサービスの一つであるGoogle Compute Engine(GCE)はMagentoを動作させることが可能です。
今回は、Magentoを利用するサーバとして、GCEの性能を測定してみたいと思います。
(※ただし、測定は米国にあるものを使用しています)
今回も小規模ECサイトを構築するという想定で Magentoを1台のサーバにオールインワンでインストールして、性能を計測を行いたいと思います。
Magentoの処理の時間を計ってそれぞれのインスタンスの性能がどうなるのかを計測して比較してみることにしました。
また費用については、1ヶ月常時サーバを稼働させるといくらになるのかをまとめてみました。
測定するサーバのスペック
今回比較に用いたサーバのスペックは下記の様になります。
-
GCEのサーバのスペック
リージョン:米国
ディスクタイプ SSD永続ディスクサーバのタイプ スペック GCE: n1-standard-1 仮想コア 1 メモリ 3.75GB GCE: n1-highcpu-2 仮想コア 2 メモリ 1.8GB GCE: n1-standard-2 仮想コア 2 メモリ 7.5GB GCE: n1-highcpu-4 仮想コア 4 メモリ 3.6GB GCE: n1-highcpu-8 仮想コア 8 メモリ 7.2GB -
料金の考え方
GCEではインスタンスを立ち上げている時間に対して従量課金になります。サーバのタイプ 費用 GCE: n1-standard-1 $0.070/1時間 GCE: n1-highcpu-2 $0.088/1時間 GCE: n1-standard-2 $0.140/1時間 GCE: n1-highcpu-4 $0.176/1時間 GCE: n1-highcpu-8 $0.352/1時間 また、インスタンスを一定期間利用すると、自動的に割引がされるようです。
Googleの料金説明を読むと、
1ビリングサイクルの25%を超えると、価格が自動的に下がりはじめます。事前に使用期間をコミットメントする必要はありません。Googleは既に低価格で提供しているのですが、1ビリングサイクルの100%を超えた場合、ディスカウント率は30%に達します。
と書いてあります。
文章からすると、支払い期間の25%を越える期間利用すると割引が始まり、支払い期間中ずっとインスタンスを使い続けると、最大で30%オフになるということのようです。
※永続ディスクを利用している間、別途料金が発生します。($0.04 : 1 GB/1 ヶ月 あたり)
※インターネットへのデータ転送送信(アウト)について別途料金が発生します。(1 TB/月まで $0.12/GB)
計測内容
今回は店舗側の代表的な機能を使って計測しました。
- 店舗:商品詳細のページのリクエスト処理速度
- 店舗:商品一覧の表示のページのリクエスト処理速度
測定方法
測定時の詳細な条件は下記となります。
- 店舗:商品詳細の表示
Apache Benchコマンドを利用してページの表示速度を測定しました。同時接続数を可変にし、総リクエスト数は同時接続数の10倍に設定しています。 また、これらの測定を10回行い、平均を出しています。
コマンドの例> ab -c [同時接続数] -n [総リクエスト数] [URL]
測定結果
商品一覧のリクエスト処理速度[リクエスト/秒]
![商品一覧のリクエスト処理速度[リクエスト/秒]](http://magento.flatz.jp/wp-content/uploads/2014/07/3723a5a3727132fac4b9891d99f63a4a-500x318.png)
サーバ | 同時接続数 | ||||||
---|---|---|---|---|---|---|---|
1 | 2 | 5 | 10 | 20 | 50 | 100 | |
GCE: n1-standard-1 | 1.468 | 1.478 | 1.461 | 1.445 | 1.37 | - | - |
GCE: n1-highcpu-2 | 1.507 | 1.789 | 1.801 | 1.768 | 4.171 | - | - |
GCE: n1-standard-2 | 1.522 | 1.752 | 1.702 | 1.703 | 1.623 | - | - |
GCE: n1-highcpu-4 | 3.433 | 6.2 | 8.379 | 8.369 | 8.205 | 8.205 | - |
GCE: n1-highcpu-8 | 3.712 | 7.075 | 13.303 | 16.6 | 16.796 | 16.921 | 17.273 |
※「-」の項目は、負荷が高く測定不能だったもの。
商品詳細のリクエスト処理速度[リクエスト/秒]
![商品詳細のリクエスト処理速度[リクエスト/秒]](http://magento.flatz.jp/wp-content/uploads/2014/07/74acaaffe81b72e7063b1e97cb2cef14-500x322.png)
サーバ | 同時接続数 | ||||||
---|---|---|---|---|---|---|---|
1 | 2 | 5 | 10 | 20 | 50 | 100 | |
GCE: n1-standard-1 | 1.468 | 1.478 | 1.461 | 1.445 | 1.37 | - | - |
GCE: n1-highcpu-2 | 1.506 | 1.805 | 1.826 | 2.954 | 4.324 | - | - |
GCE: n1-standard-2 | 1.522 | 1.752 | 1.702 | 1.703 | 1.623 | - | - |
GCE: n1-highcpu-4 | 3.564 | 6.25 | 8.55 | 8.711 | 8.565 | 8.577 | - |
GCE: n1-highcpu-8 | 3.796 | 7.184 | 13.302 | 16.98 | 17.714 | 17.663 | 17.65 |
※「-」の項目は、負荷が高く測定不能だったもの。
サーバの月額費用のシミュレーション
サーバ | 月額費用[円] |
---|---|
GCE: n1-standard-1 | 3657 |
GCE: n1-highcpu-2 | 4577 |
GCE: n1-standard-2 | 7234 |
GCE: n1-highcpu-4 | 9074 |
GCE: n1-highcpu-8 | 18067 |
※20GBストレージを1ヶ月間利用した場合の想定。
※ネットワークのデータ転送送信(アウト)の費用は含めない。
※$1-100円のレートで費用を計算。
考察
店舗側のリクエスト処理速度の比較
店舗側で測定した商品一覧のリクエスト処理速度と商品詳細のリクエスト処理速度をグラフで見てみると、おおよそ、
n1-highcpu-8 > n1-highcpu-4 > n1-highcpu-2 ≧ n1-standard-2 ≒ n1-standard-1
の順で性能が高いといえると思います。
今回どの環境でもメモリが足りないということはありませんでしたので、仮想コアの数がそのまま性能に関係していると考えられます。
今回意外だったのは、n1-standard-2、n1-standard-1での性能の差異があまり見られなかった点です。仮想CPUが1と2を設定してもあまり性能には影響しませんでした。
またn1-highcpu-2を利用した場合は、同時接続数が20以上で若干性能が向上するようです。同じ仮想CPU2のn1-standard-2ではこのような結果にはなりませんでした。
同時接続数がほとんど無い場合ようなサイトの場合はn1-standard-1を利用しても問題ないかもしれませんが、アクセスが集中する時間帯がある場合はn1-highcpu-4以上のスペックのサーバを利用したほうが良いように思います。
サーバの月額費用のシミュレーション
費用の点でいうと、highcpuとstandardでは、同じ仮想CPU数であれば、highcpuの方が安くなっています。その分highcpuではメモリが少なくなっていますが、CPUとメモリのバランスがよいので、特殊な環境でなければhighcpuのインスタンスを使ったほうがいいのではないでしょうか。
まとめ
- n1-highcpu-8 > n1-highcpu-4 > n1-highcpu-2 ≧ n1-standard-2 ≒ n1-standard-1 の順で性能が高い
- highcpuとstandardでは、Magentoを普通に使う上ではhighcpuの方が性能がよい。(通常利用では、メモリを使い切るような状況にならない)
今後の課題
- n1-highcpu-2、n1-standard-2、n1-standard-1の性能の違いを説明するような理由が今回の測定からはよくわかりませんでした。何故、そうなるのか、また性能を出し切る方法がないかなど分かればまた報告したいと思います。