はじめに
2014年12月18日にMagento2がベータ版となりました。
Magento2は管理画面や店舗も一新されています。現在も開発が進んでいますがどの程度の性能がでるのか気になるところです。
海外ではMagento EE 1.14との比較をされている方もおられるようです。
そこで今回はMagento2のCommunity Edition(以下CEと表記)のベータ版とMagento1の最新版であるCE 1.9.1と一つ前のCE 1.8.1の性能を比較してみたいと思います。
Magento2はベータ版ですので、最終的には正式公開されたものを評価する必要がありますが、現時点でどれくらいの性能なのかを知っておき、 今後の指標として使えるようにしていきたいと思います。
測定環境
いつものように、小規模ECサイトを構築するという想定でMagentoを1台のサーバにインストールし、 いくつかの性能値を計測します。その環境についても記載します。
測定に用いたソフトウェアのバージョンとサーバのスペックは下記のようになります。
Magentoのバージョン | Magento CE 2 0.42.0-beta4 | Magento CE 1.9.1 | Magento CE 1.8.1 |
---|---|---|---|
Magentoのカスタマイズの有無 | 無し | 無し | 無し |
Webサーバ | Apache 2.2 | Apache 2.2 | Apache 2.2 |
PHP | PHP5.5 | PHP5.5 | PHP5.3 |
DBサーバ | MySQL5.6 | MySQL5.6 | MySQL5.5 |
・サーバのスペック
クラウドの種類 | Amazon EC2 |
---|---|
リージョン | 東京 |
インスタンスタイプ | m3.medium vCPU 1 ECU 3 メモリ 3.75GB |
ストレージ | Amazon EBS スタンダードボリューム |
※vCPUとは:インスタンスの仮想 CPUの数
※ECUとは:Amazon EC2 コンピュートユニット。Amazon 独自の計算能力を示す指標。大きいほど性能が高い。
計測内容
今回は以下の時間を計測しました。
トップページ:トップのページのリクエスト処理速度
店舗:商品詳細のページのリクエスト処理速度
店舗:商品一覧の表示のページのリクエスト処理速度
測定方法
測定時の詳細な条件は下記となります。
Apache Benchコマンドを利用してページの表示速度を測定しました。
同時接続数を可変にし、総リクエスト数は同時接続数の10倍に設定しています。 また、これらの測定を10回行い、平均を出しています。
コマンドの例> ab -c [同時接続数] -n [総リクエスト数] [URL]
トップページのリクエスト処理速度[リクエスト/秒]
サーバ | 同時接続数 | ||||||
1 | 2 | 5 | 10 | 20 | 50 | 100 | |
EC2 Magento CE 1.8.1 | 2.951 | 3.223 | 3.18 | 3.077 | 3.032 | 2.891 | 2.891 |
EC2 Magento CE 1.9.1 | 6.185 | 5.957 | 6.671 | 6.487 | 6.514 | 6.34 | 6.34 |
EC2 Magento CE 2 beta | 9.91 | 10.279 | 9.552 | 8.884 | 8.453 | 7.374 | 7.374 |
商品一覧のリクエスト処理速度[リクエスト/秒]
サーバ | 同時接続数 | ||||||
1 | 2 | 5 | 10 | 20 | 50 | 100 | |
EC2 Magento CE 1.8.1 | 1.765 | 1.894 | 1.863 | 1.841 | 1.802 | - | - |
EC2 Magento CE 1.9.1 | 4.563 | 6.173 | 6.678 | 6.747 | 6.609 | 6.475 | 6.375 |
EC2 Magento CE 2 beta | 9.221 | 10.092 | 9.199 | 6.123333333 | - | - | - |
商品詳細のリクエスト処理速度[リクエスト/秒]
サーバ | 同時接続数 | ||||||
1 | 2 | 5 | 10 | 20 | 50 | 100 | |
EC2 Magento CE 1.8.1 | 1.896 | 1.991 | 1.958 | 1.944 | 1.877 | - | - |
EC2 Magento CE 1.9.1 | 5.701 | 5.505 | 6.727 | 6.681 | 6.626 | 6.497 | 6.395 |
EC2 Magento CE 2 beta | 9.244 | 9.932 | 8.834 | 8.784 | 7.06 | - | - |
考察
リクエスト/秒の数字が大きいほど1秒間に処理できるリクエストが多いので、性能が良いということになります。
トップページでは、全体的にMagento 2 betaが最も高速で、つづいてCE1.9.1、CE1.8.1の順となりました。Magento 2 betaとCE1.9.1ではPHPとMySQLのバージョンは一緒ですので、比較的アプリケーションの作りによる性能の違いがでていると考えられます。全体的にMagento 2 betaがCE1.9.1にくらべて高速でした。これはフルページキャッシングなどの機能がMagento 2 betaで有効になっていることが理由として考えられると思います。注目する点は同時接続数が増えた場合、Magento 2 betaでは性能が低下してる点です。同時接続数が今回の測定範囲を超え場合にどのようになるのか注意が必要だと言えます。また、CE1.8.1とCE1.9.1ではCE1.9.1が2倍強の性能ですが、これはPHPとMySQLのバージョンの違いによるところが大きいのではないかと思います。
次に商品一覧です。同時接続数が5までは、Magento 2 betaが最も高速でしたが、同時接続数が10では、CE1.9.1より性能が低下し、同時接続数が20ではMagento 2 betaは測定不能(エラーにより接続が正常におこなわれない状態)となってしましました。対してCE1.9.1は同時接続数が100までは性能が安定していました。商品一覧ではMagento 2 betaは高速化されていますが、同時接続数が多い場合の処理に改善の余地があるかもしれません。また、CE1.8.1は、全体的に性能が低く、CE1.9.1の半分以下の性能しかでませんでした。また同時接続数50以上では測定不能となりました。
最後に商品詳細です。同時接続数20まではMagento 2 betaが最も高速でしたが、同時接続数50以上では測定不能となりました。やはり、同時接続数が多い場合の処理に改善の余地があるようです。CE1.8.1は、全体的に性能が低く、CE1.9.1の3分の1以下の性能しかでませんでした。また、同時接続数50以上では測定不能となりました。
今回の結果で、Magento 2 betaの性能は同時接続数が少ない場合にはCE1.9.1よりも高いことがわかりました。また同時接続数が多い場合には、CE1.9.1よりも早くエラーとなる場合があり、改善の余地があると思われます
今回の測定では画像やCSS、JavaScriptなどのファイルの読みなどは考慮しない性能となっています。 ブラウザで手動で表示までの速度を見てみたところ、体感的にはMagento1よりMagento 2 betaの方が表示に時間がかかっている感じがしました。
まとめ
Magento 2はまだベータですので、実際に利用してみると、まだ動作がもたつく部分があるように感じられましたが、PHPの基本部分の処理は高速に動作するようになっているようです。
感想
Magento 2は一から作り直している分、基本的な設計の改善がされているため、今後の進展が楽しみです。現時点での性能も比較的安定しているように見えるので、RC版がでた際に再度性能を比較したいと思います。
今後の課題
- Magento2のRC版の性能測定
- Magento2のAjax呼び出し等の性能測定