MySql性能測試工具-sysbenchmysql
sysbench簡介
sysbench是跨平臺的基準測試工具,支持多線程,支持多種數據庫;主要包括如下幾種測試:
cpu性能
磁盤io性能
調度程序性能
內存分配及傳輸速度
POSIX線程性能
數據庫性能(OLTP基準測試)
本文主要介紹對數據庫性能的測試。git
1. 下載安裝包,地址 https://github.com/akopytov/sysbenchgithub
#wget https://github.com/akopytov/sysbench/archive/1.0.zip -O "sysbench-1.0.zip"sql
#unzip sysbench-1.0.zip數據庫
#cd sysbench-1.0服務器
2. 安裝依賴庫網絡
#yum install automake libtool -y多線程
3.開始安裝併發
#./autogen.shsocket
#./configure
4. 若是是yum安裝的mysql,不知道路徑在哪裏。想查找mysql的安裝路徑須要安裝mysql-devel,才能使用mysql_config
#yum install -y mysql-devel
5. 執行./configure
./configure --with-mysql-includes=/usr/local/mysql/include --with-libs=/usr/local/mysql/lib
#make&&make install
6. 添加變量:
#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 cleanupSQL 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