sysbench支持如下幾種測試模式:
一、CPU運算性能
二、磁盤IO性能
三、調度程序性能
四、內存分配及傳輸速度
五、POSIX線程性能
六、數據庫性能(OLTP基準測試)mysql
1.安裝
採用yum epel安裝爲1.0版本(測試0.X版本與1.X版本差別比較大參數都不一樣)sql
2.CPU測試數據庫
對CPU的性能測試一般有:1.質數計算;2圓周率計算;sysbench使用的就是經過質數相加的測試。對CPU測試直接運行run便可。
sysbench --threads=20 --events=10000 --debug=on --test=cpu --cpu-max-prime=20000 run
20個線程執行1萬條請求,每一個請求執行質數相加到20000服務器
3.內存測試併發
測試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 rundom
4.文件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性能,須要跑相同的線程async
5.鎖測試ide
互斥鎖測試模擬全部線程在同一時刻併發運行。
sysbench --threads=12 mutex --mutex-num=1024 --mutex-locks=10000 --mutex-loops=10000 runoop
6.線程測試
sysbench threads --num-threads=64 --thread-yields=100 --thread-locks=2 run
7.OLTP測試
oltp是針對數據庫的基準測試,例如每次對數據庫進行優化後執行基準測試來測試不一樣的配置的tps。sysbench 0.5以後經過一系列LUA腳原本替換以前的oltp,來模擬更接近真實的基準測試環境。這些測試腳本包含:insert.lua、oltp.lua、parallel_prepare.lua、select_random_points.lua、update_index.lua、delete.lua oltp_simple.lua、select.lua、select_random_ranges.lua、update_non_index.lua
預置條件:
a)建立數據庫:
mysqladmin create sbtest -uroot –p
或者
SQL>create database sbtest
b)增長權限:
grant usage on . to 'sbtest'@'%' identified by password '*2AFD99E79E4AA23DE141540F4179F64FFB3AC521';
其中密碼經過以下命令獲取:
select password('sbtest');
+-------------------------------------------+
| password('sbtest') |
+-------------------------------------------+
| 2AFD99E79E4AA23DE141540F4179F64FFB3AC521 |
+-------------------------------------------+
1 row in set (0.00 sec)
c)增長權限:
GRANT SELECT,INSERT,UPDATE,DELETE,CREATE,DROP,ALTER,INDEX ON sbtest. TO 'sbtest'@"%";
grant all privileges on . to 'sbtest'@'%';
flush privileges;
或者簡單粗暴:
create user 'sbtest'@'127.0.0.1' identified by 'sbtest';
grant all privileges on . to
flush privileges;
e)OLTP測試:
準備階段:
sysbench --test= /usr/local/share/sysbench/tests/include/oltp_legacy/oltp.lua --oltp-table-size=10000 --mysql-table-engine=innodb --oltp-tables-count=10 --mysql-user=sbtest --mysql-password=sbtest --mysql-port=3306 --mysql-host=127.0.0.1 --max-requests=0 --time=10 --report-interval=1 --threads=10 --oltp-point-selects=1 --oltp-simple-ranges=0 --oltp_sum_ranges=0 --oltp_order_ranges=0 --oltp_distinct_ranges=0 --oltp-read-only=on prepare
測試階段:
命令以下:
sysbench --test= /usr/local/share/sysbench/tests/include/oltp_legacy/oltp.lua --oltp-table-size=10000 --mysql-table-engine=innodb --oltp-tables-count=10 --mysql-user=sbtest --mysql-password=sbtest --mysql-port=3306 --mysql-host=127.0.0.1 --max-requests=0 --time=10 --report-interval=1 --threads=10 --oltp-point-selects=1 --oltp-simple-ranges=0 --oltp_sum_ranges=0 --oltp_order_ranges=0 --oltp_distinct_ranges=0 --oltp-read-only=on run
清理階段:
sysbench --test= /usr/local/share/sysbench/tests/include/oltp_legacy/oltp.lua --oltp-table-size=10000 --mysql-table-engine=innodb --oltp-tables-count=10 --mysql-user=sbtest --mysql-password=sbtest --mysql-port=3306 --mysql-host=127.0.0.1 --max-requests=0 --time=10 --report-interval=1 --threads=10 --oltp-point-selects=1 --oltp-simple-ranges=0 --oltp_sum_ranges=0 --oltp_order_ranges=0 --oltp_distinct_ranges=0 --oltp-read-only=on cleanup
最後刪除數據庫
SQL>drop database sbtest;
參數解釋
經過命令sysbench –help能夠了解各參數的具體解釋
--test=tests/db/oltp.lua 表示調用 tests/db/oltp.lua 腳本進行 oltp 模式測試
--oltp_tables_count=10 表示會生成 10 個測試表
--oltp-table-size=100000 表示每一個測試表填充數據量爲 100000
--mysql-engine-trx=STRING指定不一樣的存儲引擎測試。
--oltp-test-mode=STRING測試類型:simple(簡單select測試),complex(事務測試),nontrx(非事務測試),sp(存儲過程) ;默認complex
--oltp-sp-name=STRING指定存儲過程進行語句測試
--oltp-table-size=N指定表的記錄大小,默認[10000]
--oltp-num-tables=N指定測試表的數量,默認1
--rand-init=on 表示每一個測試表都是用隨機數據來填充的
--file-num=N建立測試文件的數量,默認128個
--file-block-size=N block size大小,默認16K
--file-total-size=SIZE全部文件的總大小,默認2G
--file-test-mode=STRING測試類型 {seqwr(順序寫), seqrewr(順序讀寫), seqrd(順序讀), rndrd(隨機讀), rndwr(隨機寫), rndrw(隨機讀寫)} --file-io-mode=STRING I/O模式,須要系統支持默認sync[sync(同步IO),async(異步IO),mmap()]
--file-async-backlog=N每一個線程的異步操做隊列數,默認128個,須要--file-io-mode=async;
--file-extra-flags=STRING additional flags to use on opening files {sync,dsync,direct} []
--file-fsync-freq=N當請求數達到多少時執行fsync()刷新,默認100,0表明過程當中不執行fsync()
--file-fsync-all=[on|off] 執行每個寫操做後執行fsync()刷新操做,默認關閉off --file-fsync-end=[on|off] 測試結束執行fsync()操做,默認開啓on --file-fsync-mode=STRING 同步刷新方法,默認fsync {fsync, fdatasync} --file-merged-requests=N合併指定數量的IO請求,0表明不合並,默認0 --file-rw-ratio=N 讀寫比例,默認1.5/1
mysql基本語法
#啓動數據庫systemctl start mariadb#連接mysql -h 主機地址 -u 用戶名 -p 用戶密碼#顯示數據庫show databases;#判斷是否存在數據庫wpj1105,有的話先刪除drop database if exists testdb;#建立數據庫create database testdb;#刪除數據庫drop database testdb;#使用該數據庫use testdb;#顯示數據庫中的表show tables;查看MySQL用戶權限:show grants for 你的用戶如:show grants for root@'localhost';show grants for 'test'@'%';回收權限revoke ALL PRIVILEGES ON . from 'test'@'%';