アーキテクト必須のパフォーマンス テスト -- データベース圧力テスト ツール sysbench のインストールと使用

Sysbench は、CPU/メモリ/スレッド/IO/データベースなどのパフォーマンス テストを実行できるオープンソースのマルチスレッド パフォーマンス テスト ツールです。

開発者は、サービスのパフォーマンスを理解する必要があります。qps、tps、rt などは、サービスをテストするための基本的なパフォーマンス指標です。この記事では、インストールからの圧力測定プロセスとデータベースのパフォーマンス指標に焦点を当てます。 sysbench の実際のテスト情報

1.sysbenchソフトウェアのインストール

インストールは、オンライン インストールとオフライン インストールの 2 つの状況に分けられます。

  • 1.1 オンライン インストール (centos システム):
curl -s https://packagecloud.io/install/repositories/akopytov/sysbench/script.rpm.sh | sudo bash	

sudo dnf -y install sysbench

さまざまなシステムでは、インストール用の公式リンクを参照できます: sysbench オープンソース git アドレス

  • 1.2 オフラインインストール

1. インストールパッケージをサーバーに置き、解凍します。

tar -xvzf sysbench-xxxx.tar.gz

インストールパッケージのダウンロードアドレス:sysbench1.0.20パッケージ

2. 関連コンポーネントをインストールする

yum install m4 autoconf automake libtool

yum -y install mysql-devel(mysql数据库依赖库,其他数据库要换成对应的xxx-devel)

3. 自動生成されたスクリプトを実行します。

./autogen.sh
如果没权限用chmod +x autogen.sh命令修改

4. 確認、インストール、コンパイル

./configure

make && make install

5. インストールが成功したかどうかを確認します

进入到安装目录,执行命令
cd /usr/bin/

./sysbench --version

これまでのところ、インストールプロセスは完了しており、関連するスクリプトファイルが /usr/share/sysbench ディレクトリにあることがわかります。

2. 性能試験プロセス

この記事では、データベースのテストを例に説明します。準備 (データベースとテーブルの構築とデータの初期化ステージ)、実行 (テストステージ)、クリーンアップ (データベーステーブルと対応するデータ情報のクリア) ステージの 3 つのステップに大別されます。

2.1 初期化

まず、sysbench のインストール ディレクトリに移動します。

cd /usr/bin

次の初期化コマンドを実行します。lua スクリプトのデフォルト接続はデータベースであるため、コマンドを実行する前に、事前にデータベース上に sbtest データベースを作成する必要があります。ライブラリが存在しない場合、対応するコマンドはエラーを報告する可能性があります。

sysbench \ 
--mysql-host=${tidb_host} \ 
--mysql-port=4000 \ 
--mysql-user=root \ 
--mysql-db=sbtest \ 
--time=100 \ 
--threads=16 \ 
--report-interval=10 \ 
--db-driver=mysql \ 
--rand-type=uniform \ 
--rand-seed=$RANDOM \ 
--tables=16 \ 
--table-size=10000000 
\ oltp_common 
\ prepare

コマンドラインのパラメータは実際の状況に応じて設定されます。データベースがロード プロキシに haproxy を使用する場合、対応するホストとポートはロードのポートに置き換えられます。上記は tidb データベースのポートに対応します。

上記のコマンドでは、16 個のテーブルを作成することを意味します。各テーブルには 1000w 行のデータがあります。ランタイムは、10 秒ごとにリアルタイムのパフォーマンスを報告します。同時アクセスには 16 スレッドがあります。合計実行時間は 100 秒で、その他はデータベース接続情報を表します。

2.2 データの予熱

sysbench \ 
--mysql-host=${tidb_host} \ 
--mysql-port=4000 \ 
--mysql-user=root \ 
--mysql-db=sbtest \ 
--time=100 \ 
--threads=16 \ 
--report-interval=10 \ 
--db-driver=mysql \ 
--rand-type=uniform \ 
--rand-seed=$RANDOM \ 
--tables=16 \ 
--table-size=10000000 \ 
oltp_common \ 
prewarm

2.3 圧力試験

sysbench \
  --mysql-host=${tidb_host} \
  --mysql-port=4000 \
  --mysql-user=root \
  --mysql-db=sbtest \
  --time=100 \
  --threads=${threads} \
  --report-interval=10 \
  --db-driver=mysql \
  --rand-type=uniform \
  --rand-seed=$RANDOM \
  --tables=16 \
  --table-size=10000000 \
  ${test} \
  run

t e s t 变量换成 s y s b e n c h 对应的 l u a 脚本名称,可以在 / u s r / s h a r e / s y s b e n c h 目录下查看脚本名称,可以分别测试下 o l t p p o i n t s e l e c t o l t p u p d a t e i n d e x o l t p u p d a t e n o n i n d e x o l t p r e a d w r i t e 几种情况下的性能指标,将 {test} 変数は、sysbench に対応する lua スクリプト名に置き換えられます。スクリプト名は /usr/share/sysbench ディレクトリで確認できます。oltp_point_select、oltp_update_index、oltp_update_non_index、および oltp_read_write のパフォーマンス インジケーターをそれぞれテストできます。 回実行して、次のようなコンソールの出力情報を確認します。

sysbench \
  --mysql-host=${tidb_host} \
  --mysql-port=4000 \
  --mysql-user=root \
  --mysql-db=sbtest \
  --time=100 \
  --threads=${threads} \
  --report-interval=10 \
  --db-driver=mysql \
  --rand-type=uniform \
  --rand-seed=$RANDOM \
  --tables=16 \
  --table-size=10000000 \
  oltp_point_select \
  run

2.4 データのクリア

sysbench \
  --mysql-host=${tidb_host} \
  --mysql-port=4000 \
  --mysql-user=root \
  --mysql-password='xxxxxx' \
  --mysql-db=sbtest \
  --time=100 \
  --threads=16 \
  --report-interval=20 \
  --db-driver=mysql \
  --rand-type=uniform \
  --rand-seed=$RANDOM \
  --tables=16 \
  --table-size=10000000 \
  oltp_common \
  cleanup

さて、データベースのテストプロセスは基本的にはこれですが、新しく構築したデータベースサービスについては、プロセス全体を参照して簡単なパフォーマンスストレステストを実施し、データベースの基本的なインデックス情報を大まかに理解することができます。この記事があなたのお役に立てば、それが三位一体となることを願っています。

おすすめ

転載: juejin.im/post/7264921418802462754