sysbenchツールによるMySQLデータベースのパフォーマンステストの実装方法

sysbenchツールによるMySQLデータベースのパフォーマンステストの実装方法

1. 背景

Sysbench は、システムのハードウェア パフォーマンスをテストできるストレス テスト ツールであり、データベースのベンチマークにも使用できます。 sysbench でサポートされているテストには、CPU コンピューティング パフォーマンス テスト、メモリ割り当ておよび転送速度テスト、ディスク IO パフォーマンス テスト、POSIX スレッド パフォーマンス テスト、相互排他テスト、データベース パフォーマンス テスト (OLTP ベンチマーク テスト) などがあります。現在サポートされているデータベースは、主に MySQL データベースと PG データベースです。

新しいサーバーがオンラインになったときは、サーバーのパフォーマンスをテストすることをお勧めします。潜在的な問題を特定するには、同じタイプの以前のサーバーのパフォーマンス テスト レポートと横に比較するのが最適です。新しいマシンがオンラインになる前に、サーバーの物理的なチェックを行ってください。

データベースの場合、sysbench ツールを使用してデータベース ベンチマークを実装できます。現在のシステムアーキテクチャでは、フロントエンドは水平拡張が比較的容易ですが、データベースは比較的困難であるため、ベンチマークテストはデータベースにとって非常に重要な役割を果たします。データベース ベンチマークの目的は、現在の構成 (ハードウェア構成、OS、データベース設定などを含む) でのデータベースのパフォーマンスを分析し、MySQL のパフォーマンスしきい値を見つけて、実際のシステム要件に応じて構成を調整することです。

2. sysbenchのインストール

1) インストールコマンド

yum -y install sysbench

2) インストールされているバージョンを確認する

sysbench --version

3) インストールされているソフトウェアの情報を表示します(主に rpm コマンドを使用)。

sysbench のインストール情報を照会します。mysql をテストする場合は、テスト用に sysbench に付属する lua スクリプトを使用する必要があります。クイック インストール方法を使用する場合、デフォルトのスクリプト パスは/usr/share/sysbenchです。

このコマンドにない場合は、次のコマンドを実行して、ローカル Linux システムにインストールされているすべての sysbench ソフトウェア プログラムを確認して見つけます。

rpm -qa sysbench

ソフトウェアのすべてのファイルとディレクトリの完全なファイル名を一覧表示します (リスト):

rpm -ql sysbench

3.sysbench構文

sysbench --ヘルプ
使用法:
 sysbench [オプション]... [テスト名] [コマンド]
ほとんどのテストで実装されているコマンド: 準備、実行、クリーンアップ、ヘルプ
一般オプション:
 --threads=N 使用するスレッド数 [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' を使用します) [mysql]
 --db-ps-mode=STRING 準備されたステートメントの使用モード {auto, disabled} [auto]
 --db-debug[=on|off] データベース固有のデバッグ情報を出力します [off]
コンパイルされたデータベース ドライバー:
 MySQL ドライバー
 pgsql - PostgreSQL ドライバ
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 オプション:
 --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 [オプション]... [テスト名] [コマンド]

command は、準備、実行、クリーンアップなど、sysbench によって実行されるコマンドです。 prepare はテスト用のデータを事前に準備すること、run は正式なテストを実行すること、cleanup はテストが完了した後にデータベースをクリーンアップすることです。

testname は実行するテストを指定します。sysbench の古いバージョンでは、--test パラメータを使用してテスト スクリプトを指定できます。新しいバージョンでは、--test パラメータは廃止されました。--test を使用する代わりに、スクリプトを直接指定できます。テストで使用するスクリプトは Lua スクリプトです。sysbench に付属のスクリプトを使用することも、独自のスクリプトを開発することもできます。

MySQL に関するオプションには、主に MySQL 接続情報パラメータと MySQL 実行関連パラメータが含まれます。

4 テスト

ステップ1: ストレステストデータを準備する

sysbench /usr/share/sysbench/oltp_insert.lua --mysql-host=XXX.XXX.XXX.XXX --mysql-port=3306 --mysql-user=testsbuser --mysql-password='textpwd' --mysql-db=tssysbench --db-driver=mysql --tables=15 --table-size=500000 --report-interval=10 --threads=128 --time=120 準備

ステップ2: ストレステスト

sysbench /usr/share/sysbench/oltp_insert.lua --mysql-host=XXX.XXX.XXX.XXX --mysql-port=3306 --mysql-user=testsbuser --mysql-password='textpwd' --mysql-db=tssysbench --db-driver=mysql --tables=15 --table-size=500000 --report-interval=10 --threads=128 --time=120 実行

テスト結果は、後で分析するためにファイルにエクスポートすることもできます。

 sysbench /usr/share/sysbench/oltp_insert.lua --mysql-host=XXX.XXX.XXX.XXX --mysql-port=3306 --mysql-user=testsbuser --mysql-password='testpwd' --mysql-db=tssysbench --db-driver=mysql --tables=15 --table-size=500000 --report-interval=10 --threads=128 --time=120 実行 >> ./mysysbench.log 

ステップ3: ストレステストデータをクリーンアップする

sysbench /usr/share/sysbench/oltp_insert.lua --mysql-host=XXX.XXX.XXX.XXX --mysql-port=3306 --mysql-user=testsbuser --mysql-password='testpwd' --mysql-db=tssysbench --db-driver=mysql --tables=15 --table-size=500000 --report-interval=10 --threads=128 --time=120 クリーンアップ

5. 注意事項

(1)事前にテストデータベースを作成し、テストアカウントにデータベースを作成する権限を与える必要があります。

--mysql-db パラメータはテスト データを指定します。デフォルトは sbtest です。

事前に作成されていない場合は、次のエラーメッセージが表示されます。

致命的: `sysbench.cmdline.call_command' 関数が失敗しました: /usr/share/sysbench/oltp_common.lua:83: 接続の作成に失敗しました
(最後のメッセージは3回繰り返されます)
致命的: エラー 1049: 不明なデータベース 'sysbench_db'
致命的: `sysbench.cmdline.call_command' 関数が失敗しました: /usr/share/sysbench/oltp_common.lua:83: 接続の作成に失敗しました
致命的: ホスト 'XXX.XXX.XXX.XXX'、ポート 3306 の MySQL サーバーに接続できません。中止します...
(最後のメッセージは1回繰り返されます)
致命的: エラー 1049: 不明なデータベース 'sysbench_db'
(最後のメッセージは1回繰り返されます)

または(データベースを指定せずに)

致命的: `sysbench.cmdline.call_command' 関数が失敗しました: /usr/share/sysbench/oltp_common.lua:83: 接続の作成に失敗しました
致命的: エラー 1049: 不明なデータベース 'sbtest'
致命的: ホスト 'XXX.XXX.XXX.XXX'、ポート 3306 の MySQL サーバーに接続できません。中止します...

(2) MySQLサーバが動作しているマシンでテストしないでください。一方で、ネットワーク(LANであっても)の影響が反映されない可能性があります。他方、sysbenchの動作(特に同時実行性が高い値に設定されている場合)は、MySQLサーバのパフォーマンスに影響を与えます。

(3)同時クライアント接続数(--threadパラメータ)を徐々に増やし、異なる接続数でのMySQLサーバーのパフォーマンスを観察します。

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

(5)生成されたレポートがグラフィカルな分析である場合、gnuplotツールを使用して分析することができます。

要約する

上記は、sysbench ツールを使用して MySQL データベースのパフォーマンス テストを実装するために紹介した方法です。お役に立てば幸いです。ご質問がある場合は、メッセージを残してください。すぐに返信いたします。また、123WORDPRESS.COM ウェブサイトをサポートしてくださっている皆様にも感謝申し上げます。
この記事が役に立ったと思われた方は、ぜひ転載していただき、出典を明記してください。ありがとうございます!

以下もご興味があるかもしれません:
  • Sysbench の MySQL ベンチマーク プロセスの分析
  • MySQLデータベースはsysbenchに基づくOLTPベンチマークテストを実装します
  • mysql の sysbench ストレス テストに関する詳細なチュートリアル
  • sysbench を使用して MySQL のパフォーマンスをテストする詳細なチュートリアル
  • sysbench を使用して MySQL のパフォーマンスをテストするチュートリアル
  • MySQL パフォーマンス ストレス ベンチマーク ツール sysbench の使い方の紹介

<<:  WeChatミニプログラムページで値を返す4つの解決策のまとめ

>>:  Linuxでのcrontabの使い方と注意点の詳しい説明

推薦する

フレックスレイアウトにおけるflex-growとflex-shrinkの計算方法の詳しい説明

CSS のFlex(彈性布局)すると、Web ページのレイアウトを柔軟に制御できます。Flex Fl...

Tomcat が https アクセスをサポートするための手順の説明

tomcat を https アクセスに対応させる方法ステップ: (1)キーストアファイルを生成する...

クラウド CentOS で Docker リモート サービス リンクを有効にするための実装手順

ここでは、dockerがインストールされたcentosサーバーを紹介し、リモートリンクサービスを開始...

無効と読み取り専用の機能と違い

1: readonly は、このコントロールをロックして、インターフェイス上で変更できないようにしま...

カスタム Docker イメージを作成するための Dockerfile の詳細な説明と CMD と ENTRYPOINT 命令の比較

1. 概要Docker イメージを作成するには、次の 3 つの方法があります。 Docker コミッ...

Linux ブートシステム方式の分析

この記事では、Linux システムを起動する方法について説明します。ご参考までに、詳細は以下の通りで...

MySQL でのインデックスの追加と削除に関連する操作

目次1. インデックスの役割2. インデックスの作成と削除(1)ALTER TABLE文を使用して、...

Vue v-model 関連の知識のまとめ

​v-model は、入力とフォーム データ間、または 2 つのコンポーネント間の双方向データ バイ...

VPSサーバーでよく使われるパフォーマンステストスクリプトの概要

これは、VPS サーバー用の一般的なワンクリック パフォーマンス テスト スクリプトです。マシンの構...

SQL と NoSQL の違いのまとめ

主な違い: 1. タイプSQL データベースは主にリレーショナル データベース (RDBMS) とし...

Windows 10 で MySql の解凍バージョンをインストールして構成する方法のチュートリアル

Windows 10 で MySql データベースの解凍バージョンをインストールするステップ 1: ...

ORM モデル フレームワークを使用して MySQL データベースを操作する方法

ORM とは何ですか? ORM は Object Relational Mapping の略で、オブ...

Docker クロスホストネットワーク (オーバーレイ) の実装

1. Dockerのホスト間通信Docker クロスホスト ネットワーク ソリューションには以下が含...

レスポンシブ Web をデザインするにはどうすればいいですか?レスポンシブウェブデザインのメリットとデメリット

最近レスポンシブ デザインについて学んでいて、これについていくつか整理してみました。写真の一部はイン...

Navicat を使用して csv ファイルを MySQL にインポートする

この記事では、参考までに、Navicatを使用してCSVファイルをMySQLにインポートするための具...