Sysbench の MySQL ベンチマーク プロセスの分析

Sysbench の MySQL ベンチマーク プロセスの分析

序文

1.ベンチマークは、テスト オブジェクトのクラスの特定のパフォーマンス指標の定量的、再現可能、比較可能なテストを重視するパフォーマンス テストの一種です。

さらに理解を深めるために、ベンチマークとは、特定の時点でのベンチマークを通じて既知のパフォーマンス レベル (ベースラインと呼ばれる) を確立することです。システムのハードウェアおよびソフトウェア環境が変更されると、ベンチマークが再度実行され、それらの変更がパフォーマンスに与える影響が判断されます。これは、ベンチマークの最も一般的な用途でもあります。その他の用途としては、特定の負荷レベルでのパフォーマンス制限の決定、システムまたは環境の変更の管理、パフォーマンスの問題につながる可能性のある条件の特定などが挙げられます。

2. ベンチマークの役割:

ほとんどの Web アプリケーションでは、システムのボトルネックはデータベース側で簡単に発生します。その理由は単純です。ネットワーク帯域幅、負荷分散ノード、アプリケーション サーバー (CPU、メモリ、ハード ディスクの明るさ、接続数などを含む)、キャッシュなど、Web アプリケーション内の他の要素は、水平拡張 (一般にマシンの追加と呼ばれる) によって簡単にパフォーマンスの向上を実現できます。 MySQL などのデータベースの場合、データの一貫性が求められるため、マシンを追加することでデータベースへのデータ書き込みの負荷を分散することはできません。フロントエンド キャッシュ (Redis など)、読み取りと書き込みの分離、ライブラリとテーブルのシャーディングによって負荷を軽減することはできますが、システムの他のコンポーネントの水平拡張と比較すると、制約が多すぎます。
データベース ベンチマークの目的は、現在の構成 (ハードウェア構成、OS、データベース設定などを含む) でのデータベースのパフォーマンスを分析し、データベースのパフォーマンスしきい値を見つけて、実際のシステム要件に応じて構成を調整することです。さらに、データベース サーバーのベンチマークは、データベース構造の変更前後でパフォーマンスがどのように影響を受けるかを観察するためにもよく使用されます。

3. ベンチマークテストとストレステストの違い:

多くの場合、ベンチマーク テストとストレス テストは実際の使用時に混同されやすくなります。ベンチマーク テストは、システムのストレス テストとして理解できます。ただし、ベンチマーク テストではビジネス ロジックは考慮されず、よりシンプルで直接的であり、テストが簡単です。データはツールによって生成でき、実際のデータである必要はありません。ストレス テストでは通常、ビジネス ロジック (ショッピング カート ビジネスなど) が考慮され、実際のデータが必要です。

4. ベンチマークツール:

SysBench は、さまざまなシステム パラメータの下でデータベースの負荷を評価するために主に使用される、モジュール式のクロスプラットフォーム マルチスレッド ベンチマーク ツールです。主に以下の種類のテストが含まれます。

1. CPUパフォーマンス

2. ディスクIOパフォーマンス

3. スケジューラのパフォーマンス

4. メモリ割り当てと転送速度

5. POSIXスレッドのパフォーマンス

6. データベースパフォーマンス(OLTPベンチマーク)

現在、sysbench は主に MySQL、pgsql、oracle の 3 つのデータベースをサポートしています。

インストール

yum -y sysbenchをインストールします

sysbench --help ##インストールが成功したかどうかを確認します

ご注意:インストール中に依存関係パッケージが不足している場合は、こちらをご覧ください。

データ準備

準備する

データベース sysbench_test を作成します。

show databases; #データベースを確認する

終了 #終了


2. 始めましょう

find / -name oltp*.lua # 後でコマンドを実行するために使用される sysbench 組み込みデータ書き込みスクリプトのパスを検索します

sysbench /usr/share/sysbench/oltp_read_write.lua --tables=5 --table_size=100 --mysql-user=root --mysql-password=xxx --mysql-host=192.168.0.103 --mysql-port=3306 --mysql-db=sysbench_test を準備します
#/usr/share/sysbench/oltp_read_write.lua: 上記のsysbench組み込みの読み取りおよび書き込みスクリプトのパス
#--tables: 生成されるテーブルの数を指定します。ここでは 5 つのテーブルが設定されており、5 つのテスト テーブルが生成されることを示しています。読者は実際のニーズに応じてこの値を調整できます。
#--table_size: 生成されたテーブルで生成されるデータの量を指定します。上記の例では、各テーブルに 100 個のテスト データが生成されることを示しています。実際の値は必要に応じて調整できます。たとえば、1000000 に調整すると、100 万個のテスト データが生成されることを意味します。
#--mysql-db: 接続するテスト データベースの名前。ここでのテストには、上記で作成したデータベースが使用されます。
#--mysql-user: 接続されたデータベースのユーザー名
#--mysql-password: 接続されたデータベースのパスワード
#--mysql-port: 接続されたデータベース開発のポート

実行プロンプトエラー

理由:

インポートされたデータがデータベースのデフォルト値を超えています

解決する:

MySQLがインストールされているサーバーのデータ設定を変更する必要があります

vim /etc/my.cnf

max_allowed_pa​​cket の値を変更します。存在しない場合は、最後に行を追加します。

再度実行して、mysqlクライアント上のデータを確認します

テストを実行する

sysbench /usr/share/sysbench/oltp_read_write.lua --mysql-user=root --mysql-password=xxx --mysql-host=192.168.0.103 --mysql-port=3306 --mysql-db=sysbench_test --tables=5 --table_size=100 --threads=10 --time=30 --report-interval=3 実行
#--threads: スレッドの数を示します
#--time: 実行時間を示します
#--report-interval: テスト情報を出力する間隔を秒単位で指定します
# run: 実行中を示します。その他のパラメータ情報は上記と同じなので、ここでは説明しません。

上記のコマンドは、10 個の同時スレッドが使用され、実行時間は 30 秒で、テスト情報は 3 秒ごとに出力されることを示しています。

その中でも、私たちにとってより重要な情報は次のとおりです。

  • クエリ: クエリの総数と QPS
  • トランザクション: トランザクションの総数とtps
  • レイテンシ - 95 パーセンタイル: 最初の 95% のリクエストの応答時間。

データのクリーニング

テストが完了した後も、最後の仕上げを忘れないでください。データベースに保存された大量のテスト データは、依然として影響を及ぼします。

sysbench /usr/share/sysbench/oltp_read_write.lua --tables=5 --table_size=100 --mysql-user=root --mysql-password=xxx --mysql-host=192.168.0.103 --mysql-port=3306 --mysql-db=sysbench_test クリーンアップ
#ここでのパラメータは、以前に挿入されたデータのパラメータに従って入力され、すべてがクリアされていることを確認します


データを確認する

以上がこの記事の全内容です。皆様の勉強のお役に立てれば幸いです。また、123WORDPRESS.COM を応援していただければ幸いです。

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

<<:  Vueは動的ルーティングの詳細を実装します

>>:  DockerでGDBを使用するときにブレークポイントを入力できない問題を解決する

推薦する

HTML にネストされた div の無効なマージンに対する解決策

div がネストされているときに margin が機能しない問題の解決策を次に示します。さて、マージ...

MySQLの複合インデックス方式の詳細な説明

どの DBMS でも、インデックスは最適化にとって最も重要な要素です。データ量が少ない場合、適切なイ...

QTとJavaScript間のインタラクティブデータの実装

1. QTからJSへのデータフロー1. QTはJS関数を呼び出し、JSはパラメータを通じてQTの値を...

WeChatアプレットリクエストの前処理方法の詳細な説明

質問一部のページでは、onload でデータを要求してからビューをレンダリングするため、ミニプログラ...

JavaScript フォーム検証の例

HTML フォームは、名前、電子メール アドレス、場所、年齢などのユーザー情報を収集するためによく使...

Kubernetes オブジェクトボリュームの詳細な使用方法

概要ボリュームは、さまざまなストレージ リソースを抽象化および仮想化したものです。ストレージ リソー...

MySQL グループ化クエリと集計関数

概要私たちは、双十一に天猫で化粧品を購入する人の平均支出額を知りたい(商品の価格帯を見つけるのに役立...

Vue が天気予報機能を実装

この記事では、天気予報機能を実現するためのVueの具体的なコードを参考までに共有します。具体的な内容...

Node+socketでシンプルなチャットルーム機能を実現

この記事では、参考までに、シンプルなチャットルームを実装するためのnode+socketの具体的なコ...

Bootstrap 3.0 学習ノートのボタンとドロップダウン メニュー

前回の記事はBootstrap CSS部分の簡単なレビューであり、多くの詳細が見落とされていました。...

Linux 仮想ホストで SourceGuardian (sg11) 暗号化コンポーネントを有効にする詳細な手順

注: sg11 弊社では Linux システム仮想ホストのセルフインストールのみサポートしております...

血の写輪眼と輪廻眼の特殊効果コードを実現するためのHTML+CSS

結果 (完全なコードは下部にあります): 実装は難しくありませんが、繰り返しコードが多くなります。実...

Vue でコンポーネントを一括インポート、登録、使用する方法

序文コンポーネントは、非常に頻繁に使用されるものです。多くの人は、コンポーネントを 1 つのファイル...

Ubuntu 20.04 LTS で Java 開発環境を構成する

Java開発キットjdkをダウンロードするJDK のダウンロード アドレスはhttp://www.o...

PHP+nginx サービス 500 502 エラーのトラブルシューティングのアイデアの詳細な説明

概要オンラインサービスへのアクセス中に 500 または 502 エラーが発生した場合、緊急処理とトラ...