1. MySQL独自のストレステストツールMysqlslap mysqlslap は、mysql に付属するベンチマーク ツールです。このツールは、シンプルな構文でデータをクエリし、柔軟で使いやすいです。このツールは、複数のクライアントが同時にサーバーにクエリ更新を送信することをシミュレートし、パフォーマンス テスト データを提供し、複数のエンジンのパフォーマンス比較を提供します。 mysqlslap は、最適化の前後の MySQL パフォーマンスを直感的に検証する基盤を提供します。システム運用と保守、および DBA 担当者は、オンライン データベースがサポートするユーザー トラフィックの上限とそのストレス耐性を正確に把握するために、いくつかの一般的なストレス テスト ツールを習得する必要があります。 1. デフォルトの最大接続数を変更する MySQL のストレス テストを実行する前に、デフォルトの最大接続数を次のように変更する必要があります。 [root@mysql ~]# vim /etc/my.cnf ................ [mysqld] 最大接続数=1024 [root@mysql ~]# systemctl mysqldを再起動します ` 最大接続数を表示します `mysql> show variables like 'max_connections'; +-----------------+-------+ | 変数名 | 値 | +-----------------+-------+ | 最大接続数 | 1024 | +-----------------+--------+ セット内の 1 行 (0.00 秒) ストレステストを実行するには: [root@mysql ~]# mysqlslap --defaults-file=/etc/my.cnf --concurrency=100,200 --iterations=1 --number-int-cols=20 --number-char-cols=30 --auto-generate-sql --auto-generate-sql-add-autoincrement --auto-generate-sql-load-type=mixed --engine=myisam,innodb --number-of-queries=2000 -uroot -p123 --verbose 上記コマンドのテストの説明: 2 つの読み取りおよび書き込み同時実行テストをシミュレートします。1 回目は 100、2 回目は 200 で、SQL スクリプトが自動的に生成されます。テスト テーブルには、20 個の init フィールドと 30 個の char フィールドが含まれます。毎回 2000 件のクエリ要求が実行されます。テスト エンジンは myisam と innodb です。 (上記オプションの多くはデフォルト値であり、省略可能です。各オプションの説明を知りたい場合は、mysqlslap --help で問い合わせることができます)。 テスト結果の説明:
実際のニーズに応じて、同時リクエストの数を少しずつ増やしてストレス テストを実行できます。 2. ストレステストにはサードパーティのsysbenchツールを使用する 1. sysbenchツールをインストールする [root@mysql ~]# yum -y install epel-release #サードパーティのepelソースをインストールします[root@mysql ~]# yum -y install sysbench #sysbenchツールをインストールします[root@mysql ~]# sysbench --version #ツールがインストールされていることを確認します sysbench 1.0.17 Sysbench は次のテストを実行できます。
データベース パフォーマンス テスト (OLTP ベンチマーク テスト。読み取り専用テストを実行するための oltp_read_only.lua スクリプトなど、/usr/share/sysbench/ ディレクトリ内の Lua スクリプトを通じて実行する必要があります)。 Sysbench では、コマンドを実行するときに独自の Lua スクリプトを指定してテストをカスタマイズすることもできます。 2. sysbenchツールのヘルプオプションを表示する [root@mysql ~]# sysbench --help 使用法: sysbench [オプション]... [テスト名] [コマンド] ほとんどのテストで実装されているコマンド: prepare run cleanup help # 使用可能なコマンドは 4 つ 一般オプション: # 一般オプション --threads=N 使用するスレッドの数。デフォルトは 1 [1] --events=N 許可されるイベントの最大数 [0] --time=N 最大合計実行時間(秒)[10] --forced-shutdown=STRING 強制シャットダウンまでの --time 制限後の待機秒数、または無効にする場合は 'off' [off] --thread-stack-size=SIZE 各スレッドのスタックサイズ [64K] --rate=N 平均転送速度。 0は制限なしを意味する[0] --report-interval=N 指定された間隔(秒)で定期的に中間統計を報告します 0 中間報告を無効にします [0] --report-checkpoints=[LIST,...] 完全な統計情報をダンプし、指定された時点ですべてのカウンターをリセットします。このパラメータは、テストの開始からこの時間(秒単位)が経過したときにレポート チェックポイントを実行する必要があることを示す値のコンマ区切りリストです。レポートのチェックポイントはデフォルトではオフになっています。 [] --debug[=on|off] 詳細なデバッグ情報を出力します [off] --validate[=on|off] 可能な場合は検証チェックを実行します [off] --help[=on|off] ヘルプメッセージを表示して終了する [off] --version[=on|off] バージョン情報を表示して終了する [off] --config-file=FILENAME コマンドラインオプションを含むファイル --tx-rate=N 非推奨、代わりに --rate [0] を使用してください --max-requests=N は非推奨です。代わりに --events [0] を使用してください。 --max-time=N は非推奨です。代わりに --time [0] を使用してください。 --num-threads=N は非推奨です。代わりに --threads を使用してください [1] 疑似乱数ジェネレーターのオプション: # 疑似乱数ジェネレーターのオプション --rand-type=STRING 乱数分布 {uniform,gaussian,special,pareto} [special] --rand-spec-iter=N 数値生成に使用する反復回数 [12] --rand-spec-pct=N '特別' として扱われる値のパーセンテージ(特別分布用)[1] --rand-spec-res=N 使用する「特別な」値のパーセンテージ(特別な分布用)[75] --rand-seed=N 乱数ジェネレータのシード。0 の場合、現在の時刻が RNG シードとして使用されます。[0] --rand-pareto-h=N パレート分布のパラメータh [0.2] ログオプション: # ログオプション --verbosity=N 詳細レベル {5 - デバッグ、0 - 重要なメッセージのみ} [3] --percentile=N レイテンシ統計を計算するパーセンタイル(1-100)。パーセンタイル計算を無効にするには、特別な値0を使用します [95] --histogram[=on|off] レポートにレイテンシヒストグラムを出力する [off] 一般的なデータベース オプション: # 一般的なデータベース オプション --db-driver=STRING 使用するデータベース ドライバーを指定します (使用可能なドライバーの一覧を取得するには 'help' を使用します) --db-ps-mode=STRING 準備されたステートメントの使用モード {auto, disabled} [auto] --db-debug[=on|off] データベース固有のデバッグ情報を出力します [off] コンパイルされたデータベース ドライバー: # デフォルトで MySQL と PostgreSQL をサポートする組み込みデータベース ドライバー MySQL ドライバー pgsql - PostgreSQL ドライバ mysql オプション: # MySQL データベース固有のオプション --mysql-host=[LIST,...] MySQL サーバー ホスト [localhost] --mysql-port=[LIST,...] MySQLサーバポート[3306] --mysql-socket=[LIST,...] MySQLソケット --mysql-user=STRING MySQLユーザー [sbtest] --mysql-password=STRING MySQLパスワード [] --mysql-db=STRING MySQLデータベース名 [sbtest] --mysql-ssl[=on|off] クライアントライブラリで利用可能な場合はSSL接続を使用する [off] --mysql-ssl-cipher=STRING SSL接続に特定の暗号を使用する [] --mysql-compression[=on|off] クライアントライブラリで利用可能な場合は圧縮を使用する [off] --mysql-debug[=on|off] すべてのクライアントライブラリ呼び出しをトレースします [off] --mysql-ignore-errors=[LIST,...] 無視するエラーのリスト、または「すべて」 [1213,1020,1205] --mysql-dry-run[=on|off] ドライラン。すべてのMySQLクライアントAPI呼び出しを実行せずに成功したと仮定します[オフ] pgsql オプション: # PostgreSQL データベース固有のオプション --pgsql-host=STRING PostgreSQL サーバー ホスト [localhost] --pgsql-port=N PostgreSQLサーバポート [5432] --pgsql-user=STRING PostgreSQLユーザー [sbtest] --pgsql-password=STRING PostgreSQLパスワード [] --pgsql-db=STRING PostgreSQLデータベース名 [sbtest] コンパイル済みテスト: # 組み込みテストタイプ fileio - ファイル I/O テスト cpu - CPU パフォーマンス テスト メモリ - メモリ機能の速度テスト スレッド - スレッドサブシステムのパフォーマンステスト mutex - ミューテックスパフォーマンステスト 各テストのオプションのリストについては、「sysbench <testname> help」を参照してください。 3. SysbenchはMySQLデータベースのパフォーマンスをテストします 1) テストデータの準備 #sysbench に付属する lua スクリプトの使用方法を表示します [root@mysql ~]# sysbench /usr/share/sysbench/oltp_common.lua help # sbtest ライブラリを作成する必要があります。sbtest は sysbench で使用されるデフォルトのライブラリ名です [root@mysql ~]# mysqladmin -uroot -p123 create sbtest; #次に、テストに使用するテーブルを準備します。これらのテスト テーブルは、テスト ライブラリ sbtest に配置されます。ここで使用される lua スクリプトは /usr/share/sysbench/oltp_common.lua です。 [root@mysql ~]# sysbench --mysql-host=127.0.0.1 --mysql-ポート=3306 --mysql-user=root --mysqlパスワード=123 oltp_common.lua は、 --テーブル=10 --テーブルサイズ=100000 準備する #--tables=10 は 10 個のテスト テーブルを作成することを意味します。 #--table_size=100000 は、各テーブルに 100,000 行のデータを挿入することを意味します。 #prepare は、これが数値を準備するプロセスであることを示します。 2) テストデータが存在することを確認する [root@mysql ~]# mysql -uroot -p123 sbtest; #sbtest ライブラリにログインmysql> show tables; #対応するテーブルを表示+------------------+ | sbtest 内のテーブル | +------------------+ |sbtest1| |sbtest10| |sbテスト2| |sbtest3| |sbテスト4| |sbtest5| |sbtest6| |sbtest7| |sbtest8| |sbtest9| +------------------+ セット内の行数は 10 です (0.00 秒) mysql> select count(*) from sbtest1; #テーブルをランダムに選択し、100,000件のレコードがあることを確認します+----------+ | カウント(*) | +----------+ | 100000 | +----------+ セット内の1行(0.01秒) 3) データベースのテストと結果分析 以前にデータを準備したステートメントを少し変更すると、テストに使用できます。以前使用した Lua スクリプトは oltp_common.lua であり、これは他の Lua スクリプトによって呼び出される共通スクリプトであり、テストに直接使用できないことに注意してください。 したがって、読み取りテストと書き込みテストを実行するには、oltp_read_write.lua スクリプトを使用します。読み取り専用テスト、書き込み専用テスト、削除テスト、一括挿入テストなど、他の多くの種類のテストがあります。対応する lua スクリプトを見つけて呼び出すことができます。 #次のようにテストコマンドを実行します。 [root@mysql ~]# sysbench --threads=4 --時間=20 --レポート間隔=5 --mysql-ホスト=127.0.0.1 --mysql-ポート=3306 --mysql-user=root --mysqlパスワード=123 oltp_read_write.lua は、以下のいずれかの形式で保存されます。 --テーブル=10 --テーブルサイズ=100000 走る 上記のコマンドは次の結果を返します。 [root@mysql ~]# sysbench --threads=4 --time=20 --report-interval=5 --mysql-host=127.0.0.1 --mysql-port=3306 --mysql-user=root --mysql-password=123 /usr/share/sysbench/oltp_read_write.lua --tables=10 --table_size=100000 実行 sysbench 1.0.17 (システム LuaJIT 2.0.4 を使用) 次のオプションでテストを実行します。 スレッド数: 4 5秒ごとに中間結果を報告します 現在の時刻から乱数ジェネレータを初期化しています ワーカー スレッドを初期化しています... スレッドが始まりました! # 以下は 5 秒ごとに返される結果です。統計指標には次のものが含まれます。 # スレッド数、tps(1秒あたりのトランザクション数)、qps(1秒あたりのクエリ数)、 # 1 秒あたりの読み取り/書き込み/その他の回数、遅延、1 秒あたりのエラー、1 秒あたりの再接続 [ 5 秒 ] thds: 4 tps: 1040.21 qps: 20815.65 (r/w/o: 14573.17/4161.25/2081.22) lat (ms,95%): 7.17 err/s: 0.00 reconn/s: 0.00 [ 10 秒 ] スレッド: 4 tps: 1083.34 qps: 21667.15 (r/w/o: 15165.93/4334.55/2166.68) lat (ms,95%): 6.55 エラー/秒: 0.00 偵察/秒: 0.00 [ 15 秒 ] スレッド: 4 tps: 1121.57 qps: 22429.09 (r/w/o: 15700.64/4485.30/2243.15) lat (ms,95%): 6.55 エラー/秒: 0.00 偵察/秒: 0.00 [ 20 秒 ] スレッド数: 4 tps: 1141.69 qps: 22831.98 (r/w/o: 15982.65/4566.16/2283.18) lat (ms,95%): 6.09 エラー/秒: 0.00 偵察/秒: 0.00 SQL 統計: 実行されたクエリ: read: 307146 # 実行された読み取り操作の数write: 87756 # 実行された書き込み操作の数other: 43878 # 実行されたその他の操作の数total: 438780 トランザクション: 21939 (1096.57/秒) # トランザクション実行クエリの平均レート: 438780 (21931.37/秒) # 無視されたエラーで 1 秒あたりに実行されたクエリの平均数: 0 (0.00/秒) 再接続: 0 (0.00/秒) 一般的な統計: 合計時間: 20.0055 秒 # 消費された合計時間 イベントの合計数: 21939 # リクエストの合計数 (読み取り、書き込み、その他) レイテンシー(ミリ秒): 最小: 1.39 平均: 3.64 最大: 192.05 95 パーセンタイル: 6.67 # サンプリング合計で計算された平均レイテンシ: 79964.26 スレッドの公平性: イベント数 (平均/標準偏差): 5484.7500/15.12 実行時間 (平均/標準偏差): 19.9911/0.00 4. CPU/IO/メモリなどのテスト sysbench に組み込まれているいくつかのテスト インジケーターは次のとおりです。 [root@mysql ~]# sysbench --help .......... # 一部のコンテンツを省略 コンパイルされたテスト: fileio - ファイルI/Oテスト cpu - CPU パフォーマンス テスト メモリ - メモリ機能の速度テスト スレッド - スレッドサブシステムのパフォーマンステスト mutex - ミューテックスパフォーマンステスト 出力テスト メソッドを直接支援できます (例: fileio test)。 [root@mysql ~]# sysbench ファイル入出力ヘルプ sysbench 1.0.17 (システム LuaJIT 2.0.4 を使用) ファイル入出力オプション: --file-num=N 作成するファイルの数 [128] --file-block-size=N すべてのIO操作で使用するブロックサイズ [16384] --file-total-size=SIZE 作成するファイルの合計サイズ [2G] --file-test-mode=STRING テストモード {seqwr、seqrewr、seqrd、rndrd、rndwr、rndrw} --file-io-mode=STRING ファイル操作モード {sync,async,mmap} [sync] --file-async-backlog=N スレッドごとにキューに入れる非同期操作の数 [128] --file-extra-flags=[LIST,...] ファイルを開くときに使用する追加フラグのリスト {sync,dsync,direct} [] --file-fsync-freq=N この回数のリクエスト後にfsync()を実行します(0 - fsync()を使用しない)[100] --file-fsync-all[=on|off] 各書き込み操作後にfsync()を実行する [オフ] --file-fsync-end[=on|off] テスト終了時にfsync()を実行する [on] --file-fsync-mode=STRING 同期に使用する方法 {fsync, fdatasync} [fsync] --file-merged-requests=N 可能であれば、最大でこの数の IO 要求をマージします (0 - マージしない) [0] --file-rw-ratio=N 複合テストの読み取り/書き込み比率 [1.5] 1) IOパフォーマンスをテストする たとえば、合計 2G のファイルを 5 つ作成し、各ファイルのサイズが約 400M であるとします。 [root@mysql ~]# sysbench fileio --file-num=5 --file-total-size=2G を準備します [root@mysql ~]# ll -lh テスト* -rw------ 1 ルート ルート 410M 5月26日 16:05 test_file.0 -rw------ 1 ルート ルート 410M 5月26日 16:05 test_file.1 -rw------ 1 ルート ルート 410M 5月26日 16:05 test_file.2 -rw------ 1 ルート ルート 410M 5月26日 16:05 test_file.3 -rw------ 1 ルート ルート 410M 5月26日 16:05 test_file.4 次にテストを実行します。 [root@mysql ~]# sysbench --events=5000 --スレッド=16 ファイル --ファイル番号=5 --ファイル合計サイズ=2G --file-test-mode=rndrw --file-fsync-freq=0 --ファイルブロックサイズ=16384 走る 返される結果は次のとおりです。 次のオプションでテストを実行します。 スレッド数: 16 現在の時刻から乱数ジェネレータを初期化しています 追加のファイルオープンフラグ: (なし) 5 つのファイル、それぞれ 409.6MiB 合計ファイルサイズ 2GiB ブロックサイズ 16KiB IO リクエスト数: 5000 複合ランダムIOテストの読み取り/書き込み比: 1.50 テスト終了時に fsync() を呼び出します。有効です。 同期I/Oモードの使用 ランダム読み取り/書き込みテストを実行 ワーカー スレッドを初期化しています... スレッドが始まりました! ファイル操作: 読み取り/秒: 9899.03 書き込み数/秒: 6621.38 fsyncs/秒: 264.33 スループット: # 読み取りスループット、MiB/s: 154.66 # 読み取り帯域幅を示します 書き込み、MiB/s: 103.46 # 書き込み帯域幅を示します 一般的な統計: 合計時間: 0.3014秒 イベント総数: 5000 レイテンシー(ミリ秒): 最小: 0.00 平均: 0.81 最大: 53.56 95パーセンタイル: 4.10 合計: 4030.48 スレッドの公平性: イベント数 (平均/標準偏差): 312.5000/27.64 実行時間(平均/標準偏差): 0.2519/0.02 2) CPUパフォーマンスをテストする [root@mysql ~]# sysbench cpu --threads=40 --events=10000 --cpu-max-prime=20000 実行 ストレステストを行う際は注意してください。 ! ! ! 以上がMySQLストレステストツールMysqlslapの使い方の詳細内容です。Mysqlslapの使い方の詳細については、123WORDPRESS.COMの他の関連記事もご覧ください。 以下もご興味があるかもしれません:
|
<<: Vue フロントエンド開発における keepAlive の使用方法の詳細な説明
>>: HTML ページでコンテンツの選択、コピー、右クリックを防止する方法の詳細な説明
ウェブサイトリンク: http://strml.net/サミュエル・リード著ヒント: 昨日、Mome...
1. 中国語入力方法を設定する 2. ダブルスペルモードを設定する 3. 注意事項20.04 で S...
目次1. 概要2. 応用例2.1、Docker コンテナ分離名前空間2.2. Docker のフリー...
目次基本的な手順と使用方法行コンポーネントの分析レンダリング機能ソースコード分析Col成分の分析コン...
序文フロントエンド コードの記述では、「互換性」という言葉から逃れることはできません。過去の PC ...
これは、ネイティブJSを使用してページングクリックコントロールを実装する必要がある面接の質問です。参...
目次vueカスタムディレクティブグローバル指令ローカル指示使用フック関数(両方ともオプション)使用方...
NetEase Blog でコードを使用する方法: まずブログにログインし、ブログのホームページの左...
目次シナリオ解決してみる解決するシナリオ今日、コンポーネントの双方向データバインディングにv-mod...
MySQL 5.7.17、現在最新バージョンのようです、ダウンロードアドレスここで、プラットフォーム...
導入:スライダー ドラッグ検証は現在、多くの場所で使用されています。週末に 1 つ作成しようと思い、...
私は CentOS に実装された LDAP ユーザー管理を使用しています。これはインターネット上のほ...
1. 問題の説明何らかの理由により、中国でのDockerイメージのダウンロード速度は特に遅くなります...
<br />注:ウェブサイトの種類を示すものを除くすべてのテキストは、企業サイト用です。...
目次まず、package.jsonを設定します次にwebpackツールをインストールしますwebpa...