1. 程式人生 > >Sysbench 效能壓測及MySQL效能壓測

Sysbench 效能壓測及MySQL效能壓測

sysbench簡介

sysbench是一款開源的多執行緒效能測試工具,可以執行CPU/記憶體/執行緒/IO/資料庫等方面的效能測試。

支援MySQL/Oracle/PostgreSQL。

sysbench支援以下幾種測試模式:
1、CPU運算效能
2、磁碟IO效能
3、排程程式效能
4、記憶體分配及傳輸速度
5、POSIX執行緒效能
6、資料庫效能(OLTP基準測試)

  1. 下載地址及安裝

    下載地址:https://github.com/akopytov/sysbench
    安裝
    ./autogen.sh
    ./configure
    如果出現:configure: error: mysql_config executable not found
    需要安裝:mariadb-devel (yum install mariadb-devel 安裝mysql_config)
    make && make install 完成安裝。
    PS:此外還要安裝mariadb-server包,yum install mariadb-server。

  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 run

  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效能,需要跑相同的執行緒

  5. 鎖測試

    互斥鎖測試模擬所有執行緒在同一時刻併發執行。
    sysbench --threads=12 mutex --mutex-num=1024 --mutex-locks=10000 --mutex-loops=10000 run

  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;

  8. 引數解釋

    通過命令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

  9. 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 [email protected]'localhost';
    show grants for 'test'@'%';
    回收許可權
    revoke ALL PRIVILEGES ON . from 'test'@'%';


相關推薦

Sysbench 效能MySQL效能

sysbench簡介 sysbench是一款開源的多執行緒效能測試工具,可以執行CPU/記憶體/執行緒/IO/資料庫等方面的效能測試。 支援MySQL/Oracle/PostgreSQL。 sysbench支援以下幾種測試模式: 1、CPU運算效能 2、磁碟I

Cephfs & Ceph RBD 在k8s中的適用場景討論資料庫效能

前言 測試發現cephfs的小檔案讀寫效能一般,且寫入延遲偏高,效能不甚滿意,但是滿足於日常應用環境的讀寫是沒有問題的,但是在面對資料庫的應用場景,是否能滿足效能要求呢?本篇主要結合kubernetes,針對資料庫應用場景,對cephfs 和 ceph rbd

sysbench性能以及mysql性能

sysbench性能壓測以及mysql性能壓測 mysql基準測試 mysql性能測試 sysbench性能壓測以及mysql性能壓測一、Sysbench是一個模塊化的、跨平臺、多線程基準測試工具,主要用於各種不同系統的參數下的數據庫負載情況。 主要測試方式cpu性能磁盤i

Jmeter檢視伺服器效能

基本檢視服務端效能常用命令: cup各核使用率,記憶體使用情況: top 按1; 服務端網路頻寬檢視:sudo iftop -n 1.登入https://jmeter-plugins.org/wiki/PerfMonAgent/下載ServerAgent-2.2.1.zip,解壓

mycat 用Jconsole監控mycat的各種效能曲線

03 18:22:08 finished records :5312400  failed:0 speed:970.3878628816595                                                                                    

sysbenchMySQL,使用sysbench磁碟io

QPS - query per secondTPS - transaction per second 不是特別關注,每個業務場景中事務標準是不一樣的 Ⅰ、sysbench測試框架 Ⅱ、常用測試指令碼 [[email protected]_42_63_centos lua]# pwd /us

sysbenchMySQL,使用sysbench磁盤io

onf possible inf bubuko 最新版本 number 現在 nbsp tis QPS - query per secondTPS - transaction per second 不是特別關註,每個業務場景中事務標準是不一樣的 Ⅰ、sysbench測試框架

JMeter監控伺服器效能

效能測試時,我們的關注點有兩部分1 服務本身:併發,響應時間,TPS等2 伺服器的資源使用情況:cpu,memory,NT I/O,Disk I/O等伺服器資源的監控具體操作步驟如下(主要記錄我的實踐過程):說明:我的jmeter版本是3.1一 、下載外掛1.訪問網址http

jmeter、以及效能分析(需要登入的系統)---有圖有真相、超詳細

每個專案開發完成必然要經過各種測試,也會進行壓測一下,判斷開發完成的系統的可支撐併發量,我選用目前常用的jmeter, 下載完成解壓,雙擊jmeter.bat即可啟動(或者直接命令號啟動),如圖: 啟動後, 語言版本選擇: 新增執行緒組: 配置h

百度,分析效能拐點

概述 空閒之餘用jmeter對百度進行了一次壓測,目的是分析一下效能的拐點,驗證一下理論知識 操作  第一次實驗:200併發 併發200,不限迭代次數,同時在請求下面加RPS定時器。 目的是在200執行緒下,將RPS逐步增加到1200/S,並持續執行一段時間。   線上

MySQL效能管理架構設計(一):什麼影響了資料庫查詢速度、什麼影響了MySQL效能

一、什麼影響了資料庫查詢速度 1.1 影響資料庫查詢速度的四個因素     1.2 風險分析 QPS: Queries Per Second意思是“每秒查詢率”,是一臺伺服器每秒能夠相應的查詢次數,是對一個特定的查詢伺服

MySQL效能管理架構設計(三):SQL查詢優化、分庫分表 - 完結篇

一、SQL查詢優化(重要) 1.1 獲取有效能問題SQL的三種方式 通過使用者反饋獲取存在效能問題的SQL; 通過慢查日誌獲取存在效能問題的SQL; 實時獲取存在效能問題的SQL; 1.1.2 慢查日誌分析工具 相關配置引數: slow

TVS管與敏電阻的效能比較

    為滿足消費者日益增強的功能需求,如今市場中的電子產品也好,各類電力裝置也罷,其功能性也是日益增強,造福於消費者的同時,其自身面臨的威脅也在放大。一般功能性越強大的產品,其內部的晶片整合度也就越高,一旦晶片受損所造成的損失也是極大的。因此,如今市場中的各類產品的防護等級都是偏高的,而這類防護方案都不可

Qt連線MySQL程式設計資料庫效能調優(一)

之前整理過一篇Qt下資料庫程式設計基礎 :最近在進行單元測試,所以把遇到的一些問題整理出來,主要是關於資料庫的 1.遠端連線資料庫 連線語句是: mysql -h 192.168.xx.xx(IP地址) -P 3306(埠) -u remoteuser(登入使用

mysql效能優化 Comparison method violates its general contract

  專案上巢狀結果集查詢,查詢的列表再根據每個id進行查詢計算,巢狀的sql如下: SELECT SUM(IFNULL(t.out_rate,0)) totalOutRate, SUM(IF(IFNULL(t.pre_power,0)-IFNULL(t.power,0)<0,0,IFNULL(t.pr

MySQL效能管理架構設計:SQL查詢優化、分庫分表

1.1 獲取有效能問題SQL的三種方式 通過使用者反饋獲取存在效能問題的SQL; 通過慢查日誌獲取存在效能問題的SQL; 實時獲取存在效能問題的SQL; 1.1.2 慢查日誌分析工具 相關配置引數: slow_query_log # 啟動停止記錄

千萬級MySQL資料庫建立索引的事項提高效能的手段

1.對查詢進行優化,應儘量避免全表掃描,首先應考慮在 where 及 order by 涉及的列上建立索引。 2.應儘量避免在 where 子句中對欄位進行 null 值判斷,否則將導致引擎放棄使用索引而進行全表掃描,如:select id from t where nu

MySQL mysqlslap

介紹 mysqlslap是mysql自帶的一個性能壓測工具;mysqlslap用於和其它的一些效能壓測工具一樣可以自己造資料進行壓測。mysqlslap的報告比較簡單主要體現在執行的時間方面,沒有sysbench那樣的tps、qps等更詳細的包括。 引數 --auto-generat

MySql效能測試工具-sysbench

雖然mysql預設的有mysqlslap這個效能測試工具,但和sysbench比較來說,還遜色不少。 shell> wget https://github.com/akopytov/sysbench/archive/1.0.zip

MySQL效能管理架構設計(二):資料庫結構優化、高可用架構設計、資料庫索引優化

一、資料庫結構優化(非常重要)1.1 資料庫結構優化目的    1、減少資料冗餘:(資料冗餘是指在資料庫中存在相同的資料,或者某些資料可以由其他資料計算得到),注意,儘量減少不代表完全避免資料冗餘;  2、儘量避免資料維護中出現更新,插入和刪除異常: