さくらの専用サーバでベンチマークを実施してみた ~ スコア編 ~
はじめに
はじめまして。株式会社スマートスタイルの中野と言います。
普段は、MySQLを中心としたオープンソースDBのコンサルティングやサポートをしています。
先日、さくらインターネット様が提供する「さくらの専用サーバ*1」を触らせて頂く
機会がありましたので、そこで実施したベンチマークの結果を共有したいと思います。
*1 サーバ1台を占有して利用できるホスティングサービス → さくらの専用サーバー
検証環境
今回ベンチマークを実施した環境は以下の通りです。
【対象1:さくらクラウドA】
一般的なDBサーバをイメージした環境です。
■DBサーバ
CPU | 36core vCPU |
---|---|
MEM | 128GB |
Disk | SSD 1TB |
OS | CentOS 6.9 |
■計測サーバ
CPU | 8core vCPU |
---|---|
MEM | 32GB |
Disk | SSD 20GB |
OS | Ubuntu 16.04 |
【対象2:専用サーバ】
今回は「PCIe Flashストレージ」も使っています。
■DBサーバ
CPU | 40core vCPU |
---|---|
MEM | 256GB |
Disk | PCIe Flash 1.6 TB |
OS | CentOS 6.9 |
■計測サーバ
CPU | 8core vCPU |
---|---|
MEM | 32GB |
Disk | SSD 20GB |
OS | Ubuntu 16.04 |
使用するツール、DBMS
今回はベンチマークツールとして Sysbench 1.0(※)の最新版を利用しています。
さくらのクラウドには、MySQL 5.7.18 をインストールしています(テスト実施当時の最新版)。
また、MySQLのデータのバックアップ・リストアツールとして Percona XtraBackup 2.4.8 を
利用しています。
※ Sysbenchは現在、Percona社が引き継いで開発を続けていて最新版はGitHubで公開されています
Sybench1.0のGitHubリポジトリ
検証の手順
おおよそ以下のような手順でベンチマークを実施しました。
- Flashストレージのマウント、カーネル設定の変更(専用サーバのみ)
- DBサーバに MySQL5.7.18 と Percona XtraBackup2.4.8 をインストール
- 計測サーバに Sysbench 1.0 をインストール
- Sysbenchのデータロード実行
- XtraBackupで全体バックアップを取得
- ベンチマーク用のmy.cnfを設定
- Sysbenchのベンチマークを実行
- MySQLを停止し、XtraBackupの全体バックアップをリストア
- 6.に戻る
なお、4.で取得したバックアップをその他のDBサーバにも展開し、各ベンチマーク試験で同じデータを使用するようにしています。
詳細な手順、設定については以下の記事に記載しています。
※さくらのクラウドの検証手順解説 … さくらの専用サーバでベンチマークを実施してみた ~ 手順編 ~
DBのパラメータ設定
いくつかMySQL側のパラメータ変数に変更を加えています。
- query_cache_type=OFFに変更
→ クエリキャッシュによる高速化を防ぐため - innodb_buffer_pool_size=64Gに変更
→ sysbenchのデータサイズよりもバッファプールサイズを小さくしてI/Oバウンドにするため - performance_schema=ONに変更
→ MySQL5.7以降では有効になるのが標準的のため - back_log=1500に変更
→ sysbenchに同時接続数に耐えるため - max_prepared_stmt_countに変更
→ sysbenchが発行する大量の prepared_statement に耐えるため
専用サーバ、クラウドサーバ両方で同じ my.cnf ファイルを使用しています(datadirのパスなどは変更)。実際に使用したファイルは、上で紹介した記事に掲載しています。
検証結果
テストの結果、sysbenchによるスコアは以下のようになりました。
なお、テストは2回実施し、その平均値を最終スコアとしています。
- 接続数 … sysbench の --threads オプションでした、並列接続数
- TPS … Transaction Per Second(1秒あたりのトランザクション数)
- QPS … Query Per Second(1秒あたりのクエリ数)
【対象1:さくらのクラウド】
接続数 | TPS | QPS |
---|---|---|
8 | 255.31 | 5106.22 |
16 | 370.28 | 7405.55 |
32 | 468.8 | 9375.92 |
64 | 500.93 | 10018.62 |
128 | 447.88 | 8957.52 |
512 | 673.66 | 13473.27 |
【対象2:専用サーバ】
接続数 | TPS | QPS |
---|---|---|
8 | 671.31 | 13426.15 |
16 | 1079.94 | 21598.70 |
32 | 1081.93 | 21638.68 |
64 | 1292.79 | 25855.69 |
128 | 1325.17 | 26503.31 |
512 | 1351.71 | 27034.18 |
まとめと所感
同一のパラメータ/テーブルデータ および 同等スペックのDBサーバ/計測サーバ を用いた場合、やはり専用サーバの方が2~3倍のスコアが出ました。
ただし、専用サーバで使用しているFlashストレージが高速すぎる影響で今回お借りした環境ではネットワークがボトルネックになってしまい、スコアが伸び悩むという事象も
発生してしまいました。構成の変更などでこのネック部分を解消できれば、より高いスコアが期待できると思います。
また、今回は各ベンチマークを2回ずつ実行しましたが、クラウドサーバの方はスコアが多少上下することがあったものの、専用サーバの方はスコアが安定していました。クラウドサーバ側はパブリッククラウドである一方で、専用サーバはリソースを占有できるため
パフォーマンスの安定性と言う点でも優れているように感じました。
最後に、sysbenchを計測サーバからでなく、DBサーバのローカル上で実行した場合のスコアは以下のようになりました。
接続数 | TPS | QPS |
---|---|---|
8 | 892.59 | 17851.80 |
16 | 1472.12 | 29442.30 |
32 | 2383.91 | 47678.21 |
64 | 5603.33 | 112066.64 |
128 | 8076.60 | 161532.25 |
512 | 7404.94 | 148099.30 |
512同時接続で秒間14万8千クエリーとかなり高いスコアを記録しました。「高速で安定した性能が出るMySQLが欲しい」という要求に「さくらの専用サーバ」は応えてくれそうです。
最後に
弊社スマートスタイルの技術ブログでは AWS の Aurora(MySQL) でベンチマークを実施しています。もし興味があればこちらの記事も参考にしてください。