c0d3man52

データベース

[VPS] ConoHaデータベースサーバーの速度をベンチマークする

ConoHaのDBサーバーがキャンペーンで60日間無料だったので、受託している仕事のサーバーを移転するか検討するために、DBサーバーの速度を測るために、お手製ベンチマークを取ってみました。

公開日: 2017.8.30

あくまで、お手製ベンチマークなので、正確さに欠ける部分があるかと思います。数字などはあくまで「個人の感想」程度に見てください。

ConoHaのDBサーバー

まずは、ConoHaのDBサーバーの詳細を見てみましょう。

料金

  • 月額:540円(0.7円/時)

ConoHaのDBサーバーのスペック

  • CPU:不明
  • メモリ:不明
  • ストレージ:10GB(SSD)
  • データベースエンジン:MariaDB
  • データベース数:無制限
  • ユーザー数:無制限
  • phpMyAdmin対応:○

料金的には512MBのVPSって感じです。

ベンチマーク方法

本来なら、mysqlslapを使いたいところですが、ConoHaのDBサーバーでは使えなかったので、簡単なbashプログラムを生成して、どれくらい速度が出るのかベンチマークを取りました。

ベンチマーク環境

  • さくらVPS 1GB (月額:972円)
  • ConoHa VPS(512MB) -> DBサーバー (月額:680円+ 540円=1,220円)

ConoHa DBサーバーについては、ConoHa VPSの512MBプランと内部ネットワークで接続して、ConoHa VPS上でプログラムを実行しました。さくらVPSはすでに契約済みのプランの空きが多い時間を狙って実行しました。

ConoHa VPSとDBサーバーの接続設定方法はこちら。
->DBサーバー接続用ネットワークを使う | ConoHa

DBデータ

  • レコード数:約63万件
  • カラム数:27カラム
  • データ容量:170.1MiB
  • クエリ内容:対象カテゴリのアイテムの総数

ベンチマークプログラム

63万件の商品レコードから、指定カテゴリの行数を算出します。ちなみに、カテゴリIDにはインデックスは張っていません。

キャッシュが効く可能性もあるので、IDはランダムに出すようにしました。

※max=のところを適当に変えてください。回数で時間が変わります。例えば、1クエリあたり0.1秒だとして、10回は1秒で終わりますが、1万回だと17分くらいかかります。

vi sqltest.sh


#!/bin/sh
PATH=/opt/someApp/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin

start_time=`date +%s`

max=1000
MAX_VAL=1000

for ((i=0; i < $max; i++)); do
  # idを1-1000の間でランダムに
  mysql -uユーザー名 -pパスワード -h ホスト名 -e "SELECT count(*) FROM ベーターベース名.テーブル名 WHERE category_id = $(($(od -vAn -tu2 -N2 /dev/urandom)  % 1000))"
done

end_time=`date +%s`

time=$((end_time - start_time))
pertime=$((time/max))

totaltime="合計:${time}秒"
#timeper="1回あたり:${pertime}秒"

echo $totaltime
RESULT=`echo "scale=5; ${time} / ${max}" | bc`
echo $RESULT

毎回mysqlログインをするコストがかかるのが微妙ですが、PHPアプリなどでは同じような感じなので、多分大丈夫でしょう。

実行します。

sh sqltest.sh

結果

ConoHa VS さくらVPS

サーバー処理合計時間1回あたり
ConoHa VPS + DBサーバー242秒0.242秒
さくらVPS428秒0.428秒

さくらVPSのほうは、他の処理も少し入っているので純粋な数値になっていないのですが、それでもさくらVPS 1GBプランでWEBサーバー + DBを運用するのと同じくらいか、ひょっとしたらそれよりも速度が出ているというイメージでしょうか。

ConoHa DBサーバー 同時接続テスト

ConoHa VPSの方は、同時アクセスを増やしてテストをしてみました。

単純に、上記のバッチ処理を5個、10個同時に走らせた場合の数値です。

同時接続数合計処理回数合計処理時間1回あたり
11,000回242秒0.242秒
55,000回958秒0.196秒
1010,000回1587秒0.158秒

※「合計処理時間」は、すべてのバッチ処理が終了するまでにかかった時間

同時接続数が増えることでバッチの合計処理時間は長くなってしまいましたが、1回あたりの処理スピードは上がっているので、意外と多くのアクセスを裁けるかもしれません。

プログラム次第ですが、運用しているサイトによっては、同時接続が100とか1,000とかになることもあると思うので、そこら辺の実測は実際に運用してみてチェックしていくのが良さそうです。

感想

ConoHaのDBサーバーは同価格のVPSと同等の速度が出ることがわかりました。ひょっとしたら価格分以上の速度を出せるポテンシャルがあるのかもしれません。

ちなみに、テスト中はさくらVPSのサーバーはCPU使用率が高負荷(160-200%)になりました。一方のConoHa VPS + DBサーバーは、DBサーバーは不明ですが、VPSサーバーのほうはほぼ負荷なし(0.1-1%程度)でした。

そういった意味では、サーバーを運用していて、DBサーバーに主な負荷があるような場合は、ConoHa DBサーバーとVPSで別々に運用することで、「VPS=アプリで全力を使う」「DBサーバー=DBだけで全力を使う」という切り分けをするのも選択肢の一つと言えそうです。

特に、Webサーバーの場合、NginxとかApacheはメモリリソースを結構食うので、メモリの食い合いを避けることができるのもメリットですね。