標籤:har 多次 libtool 多線程 general 選項 cts 5.4 準備
MySql效能測試工具-sysbench
sysbench簡介
sysbench是跨平台的基準測試載入器,支援多線程,支援多種資料庫;主要包括以下幾種測試:
cpu效能
磁碟io效能
發送器效能
記憶體配置及傳輸速度
POSIX線程效能
資料庫效能(OLTP基準測試)
本文主要介紹對資料庫效能的測試。
- 下載安裝包,地址 https://github.com/akopytov/sysbench
#wget https://github.com/akopytov/sysbench/archive/1.0.zip -O "sysbench-1.0.zip"
#unzip sysbench-1.0.zip
#cd sysbench-1.0
- 安裝依賴庫
#yum install automake libtool -y
3.開始安裝
#./autogen.sh
#./configure
- 如果是yum安裝的mysql,不知道路徑在哪裡。想尋找mysql的安裝路徑需要安裝mysql-devel,才能使用mysql_config
#yum install -y mysql-devel
- 執行./configure
#./configure --with-mysql-includes=/usr/include/mysql --with-mysql-libs=/usr/lib64/mysql
#make&&make install
- 添加變數:
#export LD_LIBRARY_PATH=/usr/local/mysql/lib/
#sysbench --help
#sysbench --version
sysbench 1.0.12 (using bundled LuaJIT 2.1.0-beta2)
在執行sysbench時,應該注意:
(1)盡量不要在MySQL伺服器啟動並執行機器上進行測試,一方面可能無法體現網路(哪怕是區域網路)的影響,另一方面,sysbench的運行(尤其是設定的並發數較高時)會影響MySQL伺服器的表現。
(2)可以逐步增加用戶端的並發串連數(--thread參數),觀察在串連數不同情況下,MySQL伺服器的表現;如分別設定為10,20,50,100等。
(3)一般執行模式選擇complex即可,如果需要特別測試伺服器唯讀效能,或不使用事務時的效能,可以選擇simple模式或nontrx模式。
(4)如果連續進行多次測試,注意確保之前測試的資料已經被清理乾淨。
(1)準備資料
mysql>create database sbtest;
sysbench --test=/usr/local/share/sysbench/tests/include/oltp_legacy/oltp.lua --oltp-table-size=1000000 --mysql-user=root --mysql-password=‘123456‘ --mysql-socket=/usr/local/mysql/mysql.sock prepare
(2)執行測試
sysbench --test=/usr/local/share/sysbench/tests/include/oltp_legacy/oltp.lua --oltp-table-size=1000000 --mysql-user=root --mysql-password=‘123456‘ --mysql-socket=/usr/local/mysql/mysql.sock --max-time=60 --oltp-read-only=on --max-requests=0 --num-threads=8 run
(3)清理資料
sysbench --test=/usr/local/share/sysbench/tests/include/oltp_legacy/oltp.lua --oltp-table-size=1000000 --mysql-user=root --mysql-password=‘123456‘ --mysql-socket=/usr/local/mysql/mysql.sock cleanup
SQL statistics:
queries performed:
read: 313488 --讀總數
write: 89568 --寫總數
other: 44784 --其他動作(CURD之外的操作,例如COMMIT)
total: 447840 --全部總數
transactions: 22392 (186.27 per sec.) --總事務數(每秒事務數)
queries: 447840 (3725.43 per sec.) --總數(每秒總數)
ignored errors: 0 (0.00 per sec.) --總忽略錯誤總數(每秒忽略次數)
reconnects: 0 (0.00 per sec.) --重連總數(每秒重連次數)
General statistics:
total time: 120.2098s --總耗時
total number of events: 22392 --共發生多少事務數
Latency (ms):
min: 105.91 --最小耗時
avg: 160.86 --平均耗時
max: 850.77 --最長耗時
95th percentile: 223.34 --超過95%平均耗時
sum: 3601892.56
Threads fairness:
events (avg/stddev): 746.4000/4.95 --總處理事件數目/標準差
execution time (avg/stddev): 120.0631/0.05--總執行時間/標準差
對CPU的效能測試通常有:1.質數計算;2圓周率計算;sysbench使用的就是通過質數相加的測試。對CPU測試直接運行run即可。
sysbench --threads=20 --events=10000 --debug=on --test=cpu --cpu-max-prime=20000 run
20個線程執行1萬條請求,每個請求執行質數相加到20000
記憶體測試
測試8K順序分配:
sysbench --threads=12 --events=10000 --test=memory --memory-block-size=8K --memory-total-size=100G --memory-access-mode=seq run
測試8K隨機分配。
sysbench --threads=12 --events=10000 --test=memory --memory-block-size=8K --memory-total-size=100G --memory-access-mode=rnd run
檔案io測試
IO的測試主要用於測試IO的負載效能。主要測試選項為--file-test-mode。還有可以關注的參數包括--file-block-size、--file-io-mode、--file-fsync-freq 、--file-rw-ratio,具體參數含義請見參數解釋章節。
sysbench --threads=12 --events=10000 fileio --file-total-size=3G --file-test-mode=rndrw prepare
sysbench --threads=12 --events=10000 fileio --file-total-size=3G --file-test-mode=rndrw run
sysbench --threads=12 --events=10000 fileio --file-total-size=3G --file-test-mode=rndrw cleanup
對比兩台伺服器的io效能,需要跑相同的線程
鎖測試
互斥鎖測試類比所有線程在同一時刻並發運行。
sysbench --threads=12 mutex --mutex-num=1024 --mutex-locks=10000 --mutex-loops=10000 run
線程測試
sysbench threads --num-threads=64 --thread-yields=100 --thread-locks=2 run
Mysql-Sysbench效能測試