◼︎ 概要
mysqlslapはその名の通りMySQL関連のツールで直訳すると「mysqlを平手打ちする」 (※ 筆者は英語ができないので適当)
MySQL5.6の公式ドキュメントは以下
https://dev.mysql.com/doc/refman/5.6/ja/mysqlslap.html
複数のクライアントがサーバにアクセスしているかのように負荷をエミュレートすることができる
そんなmysqlslapについて便利なのでまとめていきます
◼︎ メリット
- 導入が用意で実行方法も簡単
- 並列数や何回実行するか、SQLの自動生成するなどオプションが豊富
- 実行すると平均、最大、最小の値を知ることができる
- 実行直後にサーバの負荷を確認するとどのぐらいまでそのサーバで処理を許容できるのかがわかる
◼︎ 導入方法
mysqlを入れていれば標準で入っている
リモートサーバから実行するなどの場合は以下のコマンドでインストールできる
$ sudo yum install -y mysql-bench
◼︎ 使用方法
負荷検証前に現状どんな状態なのかを確認する
既に動いているデータベースに対して検証する際にこの値を元に実行するといい
$ mysqladmin -u root -p extended-status | egrep '(Max|Threads_)' | Max_used_connections | 183 | | Threads_cached | 4 | | Threads_connected | 141 | | Threads_created | 4691 | | Threads_running | 1 |
Max_used_connections | これまでに記録された同時接続数の最大値 |
Threads_connected | 現在開いている接続の数 |
Threads_created | 接続を処理するために生成されたスレッド数 |
Threads_running | スリープ状態になっていないスレッド数 |
とりあえず実行してみる
$ mysqlslap -u root -p --auto-generate-sql --concurrency=10 Benchmark Average number of seconds to run all queries: 0.118 seconds Minimum number of seconds to run all queries: 0.118 seconds Maximum number of seconds to run all queries: 0.118 seconds Number of clients running queries: 10 Average number of queries per client: 0
よく使うオプションについて
–engine | テーブルの作成に使用するエンジン |
–auto-generate-sql | SQLを自動で作成する |
–csv | カンマ区切りの形式で出力する |
–auto-generate-sql-load-type | クエリのタイム(select:read, insert:write, update:update, 他) |
–concurrency | SELECT時にシミュレートするクライアントの数 |
–iterations | 実行するテストの回数 |
–create | テーブルの作成使用するSQLをファイルかオプション引数によって指定 |
–query | 実行するSELECT文をファイルかオプション引数によって指定 |
–number-of-queries | クライアントの合計クエリ数を限定する |
◼︎ 実践
// クライアント数2で合計50回テストを実行する $ mysqlslap --delimiter=";" \ --create="CREATE TABLE test (num int);INSERT INTO test VALUES (5)" \ --query="SELECT * FROM test" --concurrency=2 --number-of-queries=50 Benchmark Average number of seconds to run all queries: 0.005 seconds Minimum number of seconds to run all queries: 0.005 seconds Maximum number of seconds to run all queries: 0.005 seconds Number of clients running queries: 2 Average number of queries per client: 25 //25クエリずつ // selectのsqlを自動生成してクライアント数5のテストを合計10回実行する $ mysqlslap --auto-generate-sql-load-type=read --auto-generate-sql --concurrency=5 --number-of-queries=10 Benchmark Average number of seconds to run all queries: 0.003 seconds Minimum number of seconds to run all queries: 0.003 seconds Maximum number of seconds to run all queries: 0.003 seconds Number of clients running queries: 5 Average number of queries per client: 2
コメントを書く
コメント一覧