WebARENAのVPSであるWebARENA (Indigo)を実際に契約し、ベンチマークをしてみました。
以前、CPUやメモリ、ディスクのI/Oについてのベンチマークをしましたが、今回はWebARENA Indigoをデータベース(DB)として使った場合の性能が気になり、MySQLのベンチマークをしてみました。
MySQLはWordpressでよく使われているデータベースで、WebARENA Indigoでブログを運営したい方などに参考になると思います。
なお、以前実施したその他のベンチマークについては、以下をご覧ください。
ベンチマークの準備と詳細(OSなど)
今回のベンチマークではメモリが4GBと32GBのプランで実施しています。
OSはUbuntu24.04をインストールし、ベンチマークツールとしてはsysbenchを利用しています。
詳細については、以下のとおりです。
- OS:Ubuntu24.04 LTS。
Linux i-54100000628024 6.8.0-31-generic #31-Ubuntu SMP PREEMPT_DYNAMIC Sat Apr 20 00:40:06 UTC 2024 x86_64 x86_64 x86_64 GNU/Linux - MySQL:
mysql Ver 8.0.39-0ubuntu0.24.04.2 for Linux on x86_64 ((Ubuntu)) - Sysbench:sysbench 1.0.20
- VPSのプラン:4GB 4vCPU、32GB 8vCPUの二つ。
ベンチマークでは、一つのインスタンスのみ起動し、そのインスタンス内にMySQLやsysbenchをそれぞれインストールしています。
つまり、MySQLの接続先としてはlocalhostとなります。
また、MySQLはインストール後にチューニングなどはしておらず、ほぼデフォルト設定で実施しています。
ご参考までに、/etc/os-releaseの中身(OSの詳細)は以下の通りです。
※4GBと32GBのプランとも同じOSです。
データベースのベンチマークをする際は、書き込みと読み込みをどれぐらい実施するか、データベースの中身はどうなっているかによって結果が違ってきます。
そのため、どのようなベンチマークを行うかも大事ですが、今回はMariaDBの公式サイトで実施したベンチマークを参考に実施しました。
※概ね同じコマンドでベンチマークを実施していますが、僕はベンチマークを行う時間などは変えて実施しています。
ベンチマークでは、100万個のレコード(=データ)が存在するテーブルを10個準備します。
1個のレコードは4つのカラムが存在し、int型のカラムが2つ、char(120)が1つ、char(60)が1つで構成されます。
そして上記データベースに対して、概ね10回に9回は読み込み、1回は書き込みを行うように設定します(設定はしますが、結果をみるとなぜか9:1になっていない・・・けととりあえずベンチマークを続けます)。
1回のベンチマークは60秒の間実施し、平均TPS(Transaction Per Second。1秒間にどれぐらいの数のトランザクションを処理したか)、平均QPS(Query Per Second。1秒間にどれぐらいの数のクエリを処理したか。)、レイテンシを確認しました。
各プランでは、負荷(threadsというオプションで、同時にどれぐらいの要求をするか)を変えながらベンチマークを実施しました。
4GBプランのベンチマーク結果
threadsを8にした際は、TPSが約1,086、QPSが約13,033、レイテンシーの平均が7.36ms、要求の95パーセントは17.32ms以内で処理した、との結果になりました。
threadsを16にした際は、TPSが約1,892、QPSが約22,704、レイテンシーの平均が8.45ms、要求の95パーセントは17.32ms以内で処理した、との結果になりました。
threadsを32にした際は、TPSが約1,661、QPSが約19,940、レイテンシーの平均が19.25ms、要求の95パーセントは33.12ms以内で処理した、との結果になりました。
threadsが16の場合よりも処理件数が落ち、レイテンシーも悪くなっています。処理に一番時間がかかったケースでは約1.481秒と、頭打ち感があります。
threadsを64にした際は、TPSが約1,631、QPSが約19,579、レイテンシーの平均が39.2ms、要求の95パーセントは70.55ms以内で処理した、との結果になりました。
threadsを128にした際は、TPSが約1,552、QPSが約18,627、レイテンシーの平均が82.38ms、要求の95パーセントは153.02ms以内で処理した、との結果になりました。
ベンチマークの結果をみると、WebARENA Indigoのメモリが4GBのプランは、TPSが1,800付近、QPSが22,000付近が最大となりました。
次にメモリが32GBプランを見てみます。
32GBプランのベンチマーク結果
32GBプランでもベンチマークを実施しました。
なお、余談ですがWebARENA Indigoは時間単位での課金が可能なので、メモリが多いプランをさっと借りてみるとかもできます。
これが1ヶ月単位だと数万円の出費となるので、中々手が出ないですが・・・
※執筆当時(2024年10月)は、WebARENAやConoHa VPS が時間単位での課金が可能です。KAGOYA VPSは時間単位ではないですが、日単位での課金なので、こちらもコストを抑えることができます。
threadsを8にした際は、TPSが約1,138、QPSが約13,657、レイテンシーの平均が7.03ms、要求の95パーセントは17.63ms以内で処理した、との結果になりました。
4GBのプランとほぼ同じ結果になりました。
threadsを16にした際は、TPSが約2,263、QPSが約27,167、レイテンシーの平均が7.06ms、要求の95パーセントは16.71ms以内で処理した、との結果になりました。
4GBのプランよりもTPSやQPSが高いことがわかります。
threadsを32にした際は、TPSが約2,698、QPSが約32,385、レイテンシーの平均が11.85ms、要求の95パーセントは25.74ms以内で処理した、との結果になりました。
4GBのプランとは異なり、TPSとQPSがまだ上がっています。レイテンシーも上がっていますが(=悪化している)、4GBより速いことがわかります。
threadsを64にした際は、TPSが約2,419、QPSが約29,029、レイテンシーの平均が26.44ms、要求の95パーセントは51.02ms以内で処理した、との結果になりました。
4GBのプランではthreadsが32の時に頭打ち感がありましたが、32GBプランではthreadsが64の時に頭打ち感があります。
threadsを128にした際は、TPSが約2,245、QPSが約26,942、レイテンシーの平均が56.97ms、要求の95パーセントは104.84ms以内で処理した、との結果になりました。
threads64の時と同じ傾向で、処理件数は頭打ちで逆に減っており、レイテンシーは悪化しています。処理時間が一番長いものに関しては約1.5秒という結果になりました。
まとめ:TPSは4GBで1,800付近、32GBで2,600付近となった
WebARENA (Indigo)のインスタンスにデータベース(DB)を構築しベンチマークをした結果、4GBプランのTPSは1,800付近、32GBプランのTPSは2,600付近で頭打ちとなりました。
ただし、最初に説明したように、データベースの中身(テーブル内容など)や書き込み・読み込みの比率、データベースの設定内容によっても結果は違ってくると思います。
今回の結果は一つの参考程度に考えると良いと思います。
ベンチマーク結果をグラスにするとこんな感じになります。オレンジ色が32GBプラン、青色が4GBプランです。横軸はthreadsの数で縦軸はTPS、もしくはレイテンシー(ms)となります。
コメント