みなさん。こんにちは、eccuberの中村です。
かなり冷え込んできましたね。
風邪などひかないように、体調管理にはお気を付けください。

題名の通り、ECCUBE4の性能を測定(負荷試験)してみましたので、何回かに分けて、お伝えできればなと思います。

今回は、性能評価についての初回の記事となりますので、実施内容の概要についてざっくりとご紹介できればなと思います。

性能評価(負荷試験)の概要

まず初めに「性能評価(負荷試験)」って何だ?何が分かるの?
かと思いますので、簡単に説明したいと思います。
(私自身、初めてこのような機会をいいただいたので、「計測してみて!」となりましたが、かなり焦りました(;^_^A)

言葉の定義

読んで字の通り、サイトが目標値(計測対象によって変わります)に対してのどのくらいの処理能力があるかを確認することです。
具体的には、ツールを使用し、対象サイトに負荷(同時リクエストを投げる)をかけ、レスポンス時間(average)や1秒間での処理リクエスト数などを計測を行います。
そして、計測結果をもとにチューニングを行いより良い結果が出るようにいたします。

多くある計測方法

一口に「負荷試験」といっても、目的に応じて方法(負荷のかけかた)が多くございます。
大きく分けると以下の5つに分けることができます。

  1. 基礎テスト
  2. ストレステスト
  3. ピークロードテスト
  4. スパイクテスト
  5. 耐久テスト

※上記、負荷試験についても、奥が深く、かつ、サイト構築においては重要事項ですので、ご紹介したいと思いますが、本記事が【負荷試験の方法】の記事になってしまいますので、個別の紹介は割愛いたします。
気になる方は、下記サイトが参考になるかと思います。
参考サイト:https://blog.denet.co.jp/vol21/

性能評価(負荷テスト)を行った理由

この性能評価(負荷試験)を実施した理由は、
お客様が要求する条件(商品件数やアクセス負荷)に対して、対応可能なインフラ、ランニングコスト等のおおまかな提案・確認が事前にできるようにするためでした。

(それと、純粋な興味もありました。(笑))

計測ツールについて

負荷試験を行うにあたり、ツールは、いくつかありますが、今回は
『jmeter』
を使用いたしました。


パフォーマンス計測用のJavaアプリケーションです。〔・・・〕
JMeter を使えば、さまざまな条件のもとでパフォーマンスの計測を行う事ができます。計測されたパフォーマンスのデータは、グラフィカルに表示したり、テーブル形式で表示したり、あるいは、電子メールとして送信するすることもできます。

https://www.techscore.com/tech/Java/ApacheJakarta/JMeter/1/

※また、この「Jmeter」も初めてでしたので、大変、四苦八苦いたしました。(初めて尽くしですいません。)
Jmeterについても、大変便利なツールであり、構築には、必要かと思いますので、別の機会にご紹介できればなと思います。

計測内容について

下記、条件のもと、計測を行いました。

インフラの説明

対象としては、AWS(EC2,RDS)リソースを前提とし、実施いたしました。
また、具体的な対象となるインスタンスサイズは計測のシナリオごと分けました。

下記が対象となります。

  • OS:Amazonlinux2
  • ECCUBE4デフォルト
    ECCUBE4.0.4
    PHP7.3.19
    MySQL 5.7.30
  • 商品数
    下記件数をそれぞれシナリオごと測定いたしました。
    ① 5,000件
    ② 25,00件
    ③ 50,000件
    ④ 100,000件
  • 会員数
    25,000ユーザー(固定)
  • 受注数
    25,000件(固定)
    ※今回の計測は、主に商品検索のため、会員数と受注数に関しては、影響ない想定でしたが、環境による差異がでないように、念のため、各使用DBで同一のダミーデータ数を登録いたしました。

計測対象

商品一覧(全件検索)
※ECCUBE4デフォルト画面では、「虫眼鏡」のボタンを押したときの検索処理。
なぜ、このリクエストを対象としたかと言いますと、下記の点が考えられました。

  • ECサイトであるため、使用頻度がかなり高いと想定され、エンドユーザーの体感速度(サイト離脱など)に対する影響が大きいと考えたため。
  • 商品件数に応じて、処理の負荷がかかると推測したため。
  • 計測しやすいため

です。

計測開始手順

環境要因を避けるため、計測直前に下記の動作を実施いたしました。

〇 各シナリオ一回だけでなく、平均を取るようにいたしました。
※「スパイクテスト」では、5回実施し、平均値を結果といたしました。

〇各シナリオ繰り返すために差異をなくすため下記のような手順を行いました。

  • 各シナリオ開始前にRDSを「再起動」を実施
  • 各シナリオ開始前にECCUBE管理画面より、キャッシュを削除する
  • DBのquerycache確認と削除 (SHOW STATUS LIKE’Qcache%’; RESET QUERY)
  • シナリオ開始前に5回検索を行う(TOP→虫眼鏡→TOPを5回繰り返す)
    ※キャッシュ生成のため

〇 実施した負荷試験
現在、下記を実施しました。 

  • スパイクテスト
  • ストレステスト

※結果につていは、次回の記事でご報告したいと思います。

評価対象値について

評価にあたり、下記項目を評価対象といたしました。

  • Average
  • Error
  • Throughput

Average

平均応答速度。リクエストからレスポンスまでの平均時間を示したもの。
この値が小さければ、小さいほど、全体として処理が早く処理が可能である

Error

レスポンスのエラーの割合。

Throughput

1秒あたり(計測結果により異なる場合がある)処理した(可能な)リクエスト数。
この数値が大きければ大きい程、1秒間で処理できるリクエスト数が大きいことになり、Averageにも影響して来る。

上記、項目を参考にし、性能評価を実施いたします。

まとめ

今回は、性能評価(負荷試験)について実施概要をざっくりと概要をご紹介いたしました。
一口に性能評価といっても、とても奥が深く、難しいと感じたかもしれません。
たしかに、難しい部分もございますが、サイト構築・保守・SEOの観点からも、とても大切だと思いますので、次回の記事も引き続きご確認頂けるとうれしいです。

次回は、本題である、計測結果についてお伝えできればなと思います。

ご一読いただき、ありがとうございました。次回も宜しくお願いします。

まずはお気軽に何でも以下までご相談ください。
ECサイト構築について
まずはお気軽に何でもご相談ください。
▼問合せフォームから相談してみる。
https://ec-cuber.jp/contact-us/
▼メールで相談してみる。
  sales_ec@ids.co.jp
▼電話で直接相談してみる。
  03-6386-3652
▼EC-CUBERは、総合的なECソリューションをご提供するEC-CUBEのプロフェッショナル集団です!
https://ec-cuber.jp/service/