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
回実行して、次のようなコンソールの出力情報を確認します。
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
さて、データベースのテストプロセスは基本的にはこれですが、新しく構築したデータベースサービスについては、プロセス全体を参照して簡単なパフォーマンスストレステストを実施し、データベースの基本的なインデックス情報を大まかに理解することができます。この記事があなたのお役に立てば、それが三位一体となることを願っています。