sysbenchテストmysqlパフォーマンス(TPS、QPS、IOPS)(重要)

データベースのパフォーマンスを把握することは非常に必要です。この記事では、MySQLベンチマークテストの基本的な概念と、sysbenchを使用してMySQLをベンチマークする詳細な方法を紹介し、KingsoftのシングルバージョンRDSデータベーステストに焦点を当てています。

1.ベンチマークテストの概要1.ベンチマークテスト
とは?
データベースベンチマークテストは、データベースパフォーマンスインジケーターの定量的で再現可能な比較可能なテストです。

ベンチマークとストレステスト

ベンチマークテストは、システムの一種のストレステストとして理解できます。ただし、ベンチマークテストではビジネスロジックは考慮されません。テストはよりシンプルで直接的で、テストが簡単です。データはツールで生成でき、現実性を必要としません。ストレステストでは、通常、ビジネスロジック(ショッピングカートビジネスなど)が考慮され、実際のデータが必要です。

2.ベンチマークテストの役割
ほとんどのWebアプリケーションの場合、システム全体のボトルネックはデータベースです。理由は簡単です。ネットワーク帯域幅、負荷分散ノード、アプリケーションサーバー(CPU、メモリ、ハードディスクライト、接続数など)など、Webアプリケーションの他の要素など)、キャッシュ、水平方向の拡張(一般にplus machineとして知られています)によってパフォーマンスの向上を簡単に実現できます。MySQLの場合、データの整合性の要件により、マシンを追加してデータベースにデータを書き込むというプレッシャーを増やすことは不可能ですが、事前キャッシュ(Re​​disなど)、読み取りと書き込みの分離、データベースとテーブルの分割によって軽減できますが、システムの他のコンポーネントの水平方向の拡張と比較して、それはあまりにも多くの制限を受けます。

データベースのベンチマークテストの役割は、現在の構成(ハードウェア構成、OS、データベース設定などを含む)でのデータベースのパフォーマンスを分析して、MySQLのパフォーマンスしきい値を見つけ、実際のシステム要件に従って構成を調整することです。

3.ベンチマーク指標
一般的なデータベース指標には次のものがあります。

TPS / QPS:スループットを測定します。(TPS:1秒あたりのトランザクション(TransactionPerSecond)、1秒あたりのクエリレートQPSは、特定のクエリサーバーが指定された時間内に処理するトラフィック量の指標です)
応答時間:平均応答時間、最小応答時間、最大応答が含まれます時間、時間のパーセンテージなど。時間のパーセンテージの参照は、以前の95%のリクエストの最大応答時間など、より重要です。
同時実行性:同時に処理されたクエリ要求の数。
1
2
3
4.
ベンチマークテストの分類MySQLベンチマークテストには、次の2つのアイデアがあります。

(1)システム全体のベンチマークテスト:ブラウザ、APP、郵便配達員などのテストツールなどのhttp要求によるテスト。このソリューションの利点は、システム全体をより的確にターゲットでき、テスト結果がより正確になることです。欠点は、設計が複雑で実装が難しいことです。

(2)MySQLのみのベンチマークテスト:長所と短所は、システム全体のテストの正反対です。

MySQLに対してベンチマークを行う場合は、通常、mysqlslap、sysbenchなどの特別なツールを使用します。その中でも、sysbenchはmysqlslapよりも用途が広く、より強力で、Innodbに適しています(多くのInnodbのIO特性をシミュレートするため)次に、sysbenchを使用したベンチマークの方法について説明します。

2番目に、デプロイメント環境
最初にクラウドホストを作成します 


RDSインスタンスを作成し、クラウドホストをRDSインスタンスに追加する

クラウドホストターミナルでは、次のようにコマンドラインを使用してRDSデータベースに接続できます。

[root @ vm192-168-80-2 sysbench-1.0]#mysql -h 192.168.89.18 -u admin -p
1
3. Sysbench
1.
Sysbenchの概要Sysbenchは、マルチスレッドをサポートし、複数のスレッドをサポートするクロスプラットフォームのベンチマークツールですデータベース。主に次のテストが含まれます。

CPUパフォーマンス
ディスクIOパフォーマンス
スケジューラパフォーマンス
メモリ割り当てと転送速度
POSIXスレッドパフォーマンス
データベースパフォーマンス(OLTPベンチマークテスト)
1
2
3
4
5
6
この記事では、主にデータベースパフォーマンスのテストについて紹介します。

2. Sysbenchのインストール
この記事で使用する環境はCentOS 6.8で、他のLinuxシステムへのインストール方法も同様です。MySQLのバージョンは5.6です。

ダウンロードして解凍

wget https://github.com/akopytov/sysbench/archive/1.0.zip -O "sysbench-1.0.zip"
unzip sysbench-1.0.zip
cd sysbench-1.0
1
2
3
インストールの依存関係

yum install automake libtool –y
1
安装

./autogen.sh
./configure
make
make install
1
2
3
4
インストールは成功しました

sysbench --version
sysbench 1.0.9
1
2
3. sysbench構文
sysbench -helpを実行して、sysbenchの詳細な使用法を確認します。

sysbenchの基本的な構文は次のとおりです。

sysbench [オプション]…[テスト名] [コマンド]

以下に、実際に使用される一般的なパラメーターとコマンドを示します。

(1)コマンド

コマンドは、準備、実行、およびクリーンアップを含む、sysbenchによって実行されるコマンドです。名前が示すとおり、準備は事前にテスト用のデータを準備することであり、実行は正式なテストを実行することであり、クリーンアップはテストの完了後にデータベースをクリーンアップすることです。

(2)テスト名

testnameは、実行するテストを指定します。古いバージョンのsysbenchでは、–testパラメータを使用してテストスクリプトを指定できます。新しいバージョンでは、–testパラメータは廃止と宣言されており、–testを使用せずにスクリプトを直接指定できます。 。

たとえば、次の2つの方法は同じ効果があります。

sysbench --test =。/ tests / include / oltp_legacy / oltp.lua sysbench
./tests/include/oltp_legacy/oltp.lua
1
2
テストで使用されるスクリプトはluaスクリプトです。sysbench独自のスクリプトを使用することも、自分で開発することもできます。ほとんどのアプリケーションでは、sysbenchで提供されるスクリプトを使用するだけで十分です。sysbenchのバージョンによっては、luaスクリプトの場所が異なる場合があります。findコマンドを使用して、sysbenchパスでoltp.luaを検索できます。PS:ほとんどのデータサービスはoltpタイプです。oltpがわからない場合、データサービスはoltpタイプです。

(3)オプション

sysbenchには多くのパラメーターがあり、その中でより一般的に使用されるものには次のものがあります。

MySQL接続情報パラメーター

--mysql-host:MySQLサーバーのホスト名、デフォルトのlocalhost;このマシンでlocalhostを使用してエラーを報告し、MySQLサーバーに接続できないことを確認する場合、マシンのIPアドレスをそれに変更できます。
--mysql-port:MySQLサーバーポート、デフォルト3306
--mysql-user:ユーザー名
--mysql-password:パスワード
1
2
3
4
MySQL実行パラメーター

--oltp-test-mode:simple、nontrx、complexを含む実行モード。デフォルトはcomplexです。シンプルモードでは、シンプルクエリのみがテストされます。nontrxはクエリをテストするだけでなく、更新なども挿入しますが、トランザクションは使用しません。複雑モードテストが最も包括的で、追加、削除、変更をテストし、トランザクションを使用します。必要に応じてテストモードを選択できます。
--oltp-tables-count:テスト済みテーブルの数、実際の状況に応じて選択
--oltp-table-size:テスト済みテーブルのサイズ、実際の状況に応じて選択--threads:クライアントの
同時接続数
--time:テスト実行時間、単位は秒、値は短すぎてはいけません
。120--report-intervalを選択できます。レポートを生成するための時間間隔、単位は秒です。たとえば、10
1
2
3
4
5
6
4、sysbenchの使用例
sysbenchを実行する場合、注意する必要があります:

(1)MySQLサーバーが実行されているマシンではテストしないでください。一方で、ネットワーク(ローカルエリアネットワークでも)の影響を反映していない可能性があります。他方、sysbenchの操作(特に同時設定数が多い場合)は、MySQLに影響します。サーバーのパフォーマンス。

(2)クライアント側の同時接続数(–threadパラメータ)を徐々に増やし、接続数が異なる場合のMySQLサーバーのパフォーマンスを観察できます(それぞれ10、20、50、100などに設定した場合)。

(3)一般実行モードは複合として選択できます。サーバーの読み取り専用パフォーマンス、またはトランザクションを使用しない場合のパフォーマンスを具体的にテストする必要がある場合は、シンプルモードまたは非trxモードを選択できます。

(4)複数のテストを続けて行う場合は、前のテストデータがクリーンアップされていることを確認してください。

以下は、sysbenchで使用される例です。

(1)データを準備する

 sysbench ./tests/include/oltp_legacy/oltp.lua --mysql-host = 192.168.89.18 --mysql-port = 3306 --mysql-user = admin --mysql-password = Aa123456 --oltp-test-mode =複雑な--oltp-tables-count = 10 --oltp-table-size = 100000 --threads = 10 --time = 120 --report-interval = 10 prepare         
1


10個のテーブルが使用され、各テーブルには100,000データがあり、クライアントの同時スレッド数は10、実行時間は120秒、レポートは10秒ごとに生成されます。

(2)テストを実行する

後で分析するために、テスト結果をファイルにエクスポートします。

sysbench ./tests/include/oltp_legacy/oltp.lua --mysql-host = 192.168.89.18 --mysql-port = 3306 --mysql-user = admin --mysql-password = Aa123456 --oltp-test-mode =複雑な--oltp-tables-count = 10 --oltp-table-size = 100000 --threads = 10 --time = 120 --report-interval = 10 run >> /root/test/mysysbench.log
1
(3 )清理データ

テストを実行した後、データをクリーンアップします。そうしないと、後続のテストが影響を受けます。

[root @ vm192-168-80-2 sysbench-1.0]#sysbench ./tests/include/oltp_legacy/oltp.lua --mysql-host = 192.168.89.18 --mysql-port = 3306 --mysql-user = admin --mysql-password = Aa123456クリーンアップ
sysbench 1.0.14(バンドルされたLuaJIT 2.1.0-beta2を使用)

テーブル 'sbtest1'を削除しています...
1
2
3
4
5.テスト結果テスト後、
次のように出力ファイルを確認します。

sysbench 1.0.14(バンドルされたLuaJIT 2.1.0-beta2を使用)

次のオプションでテストを実行:
スレッド数:10
10秒ごとに中間結果を報告
現在の時刻から乱数ジェネレーターを初期化


ワーカースレッドを初期化しています...


-スレッド開始スレッド開始!

-10秒ごとのテスト結果、tps、1秒あたりの読み取り数、1秒あたりの書き込み数、99%を超える応答時間統計
[10s]をレポートします。thds:10 tps:956.45 qps:19139.38(r / w / o:13399.56 / 3825.92 /1913.91)緯度(ミリ秒、95%):29.72エラー/秒:0.00再計算/秒:0.00
[20秒] thds:10 tps:989.71 qps:19804.24(r / w / o:13862.17 / 3962.55 / 1979.52)緯度(ms 、95%):28.67エラー/秒:0.10再計算/秒:0.00
[30秒] thds:10 tps:995.44 qps:19909.03(r / w / o:13936.11 / 3982.05 / 1990.87)lat(ms、95%):27.66エラー/ s:0.00再計算/ s:0.00
[40 ] thds:10 tps:983.30 qps:19660.90(r / w / o:13764.23 / 3930.08 / 1966.59)lat(ms、95%):27.66 err / s:0.00 reconn / s:0.00
[50s] thds:10 tps:994.20 qps:19882.58(r / w / o:13918.26 / 3975.92 / 1988.41)lat(ms、95%):29.19 err / s:0.00 reconn / s:0.00
[60秒] thds:10 tps:982.50 qps:19648.18(r / w / o:13752.56 / 3930.82 / 1964.81)lat(ms、95%):28.16 err / s:0.00 reconn / s:0.00
[70s] thds:10 tps:981.10 qps:19624.20(r / w / o:13737.80 / 3924.00 / 1962.40)lat(ms、95%):29.19 err / s:0.00 reconn / s:0.00
[80s] thds:10 tps:991.69 qps:19837.87 (r / w / o:13885.81 / 3968.67 / 1983.39)lat(ms、95%):27.17 err / s:0.00 reconn / s:0.00
[90s] thds:10 tps:1007.34 qps:20142.36(r / w / o :14100.50 / 4027.27 / 2014.59)lat(ms、95%):26.68 err / s:0.00 reconn / s:0.00
[100s] thds:10 tps:1009.76 qps:20195.17(r / w / o:14135.79 / 4039.75 / 2019.63 )lat(ms、95%):26.20 err / s:0.00 reconn / s:0.00
[110s] thds:10 tps:1003.80 qps:20077.42(r / w / o:14053.54 / 4016.28 / 2007.59)lat(ms、95 %):25.74 err / s:0.00 reconn / s:0.00
[120秒] thds:10 tps:984.30 qps:19685.77(r / w / o:13781.75 / 3935.41 / 1968.61)lat(ms、95%):28.67 err / s:0.00 reconn / s:0.00
SQL統計:
    実行されたクエリ:
        読み取り:1663326-読み取りの合計数
        書き込み:475233-
        その他の書き込み合計数   :237617-その他の操作(SELECT、INSERT、UPDATE、DELETE以外のCOMMITなどの操作)の  
        合計:2376176-合計
    トランザクション数:118808( 989.85 /秒)-合計トランザクション(トランザクション/秒)
    クエリ:2376176(19797.13 /秒)無視された
    エラー:1(0.01 /秒)-合計無視されたエラーの合計(1秒あたりのエラー数)
    再接続:0(1秒あたり0.00)-再接続の総数(1秒あたりの再接続数)

一般統計:
    - 一般統計合計時間:120.0244秒-
    合計イベント数:118808-発生したトランザクション数

レイテンシ(ミリ秒):
         最小          :6.08- 最小の時間のかかる
         平均
:10.10- 平均の時間のかかる最大:87.65-最も長い時間のかかる
         95パーセンタイル:28.16-95%を超える平均の時間のかかる
         合計:1199522.76

スレッドの公平性:-
    同時統計イベント(avg / stddev):11880.8000 / 273.15-処理イベントの総数/標準偏差
    実行時間(avg / stddev):119.9523 / 0.00-合計実行時間/標準偏差
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
これらのうち、私たちにとってより重要な情報は次のとおりです。

クエリ:クエリとqpsの総数

トランザクション:トランザクションとtpsの総数

レイテンシ-95パーセンタイル:リクエストの最初の95%の最大応答時間、この場合は28.16ミリ秒。

mysql接続の数を表示する 


6.推奨事項
sysbenchの使用に関するいくつかの提案を以下に示します。

1.テストを開始する前に、システム全体のベンチマークテストを使用するか、MySQLのベンチマークテストを使用するか、またはその両方を使用するかを明確にする必要があります。

2. MySQLのベンチマークテストが必要な場合は、精度要件も明確にする必要があります。本番環境の実際のデータを使用する必要があるか、ツールを使用して生成する必要があるか、前者は実装が面倒です。実際のデータを使用する場合は、一部のデータではなくすべてのデータを使用してください。

3.ベンチマークテストは、意味をなすために複数回実行する必要があります。

4.テスト中は、マスタースレーブ同期の状態に注意してください。

5.テストでは、マルチスレッドの状況をシミュレートする必要があります。シングルスレッドの状況では、実際の効率をシミュレートできるだけでなく、ブロッキングやデッドロックの状況をシミュレートすることもできません。

参考資料:https ://www.cnblogs.com/kismetv/archive/2017/09/30/7615738.html
————————————————
Copyright Notice:この記事はCSDNのブロガーです「3本のタバコ」の元の記事は、CC 4.0 BY-SAの著作権契約に従います。転載するには、元のソースリンクとこの声明を添付してください。
元のリンク:https://blog.csdn.net/qq_36357820/article/details/80079012

元の記事を44件公開 賞賛を130 137万回再生

おすすめ

転載: blog.csdn.net/gb4215287/article/details/104823725