您好,登錄后才能下訂單哦!
如何進行sysbench壓力測試,很多新手對此不是很清楚,為了幫助大家解決這個難題,下面小編將為大家詳細講解,有這方面需求的人可以來學習下,希望你能有所收獲。
對于很多線上業務而言,如果有新服務器,新的環境,新的業務,到底資源和預期的承載壓力是否匹配,這個得用數據說話,或是通過嚴謹的論證來闡述。
比如一臺新的服務器,一般都需要經過壓力測試,我們也叫拷機測試。一般都會從多個維度來進行加壓(比如CPU,內存,IO等等),看看服務器是否依舊堅挺,雖然這一點上如果產生了懈怠或者懶惰還是會被輕視,但是從身邊的例子來看,還是會測試出一些問題來,如果發現了問題,就避免了后續的很多被動。
sysbench就是這么一個工具,功能非常全面。是一個標準模塊化,多線程的基準測試工具。
安裝的過程相對比較簡單,下載之后參考README文檔即可,我就直接略過了。
這個工具能夠測試哪些方面呢,我們用命令來說明。
sysbench --help
Compiled-in tests:
fileio- File I/O test
cpu- CPU performance test
memory- Memory functions speed test
threads- Threads subsystem performance test
mutex- Mutex performance test
oltp- OLTP test簡單來說就是下面的一些方面。
1、磁盤IO性能
2、CPU運算性能
3、調度程序性能
4、內存分配及傳輸速度
5、POSIX線程性能
6、數據庫性能(OLTP基準測試)
比如測試CPU,如果讓我們測試還真沒有什么好的思路,看看sysbench是怎么做的,可以使用命令sysbench --test=cpu help得到如下的結果:
cpu options:
--cpu-max-prime=N upper limit for primes generator [10000]可以看到重要的關鍵字prime,即質數,比如查找小于一千萬的最大質數,這個問題還是蠻燒腦的,就讓CPU來燒吧,這樣運行即可。會啟用10個并發線程,最大請求數是100
/usr/local/bin/sysbench --num-threads=10 --max-requests=100 --test=cpu --debug --cpu-max-prime=10000000 run
有了CPU壓測的基本概念,后續的幾種解釋起來就相對容易一些了。
比如測試內存,可以指定測試范圍,如32G,64G根據自己需要來。
比如我們測試32G內存,并發線程數是10個,最大請求數是100,分別從讀和寫兩種測試來做。
內存讀測試
/usr/local/bin/sysbench --num-threads=10 --max-requests=100
--test=memory --memory-block-size=8k --memory-total-size=32G
--memory-oper=readrun內存寫測試
/usr/local/bin/sysbench --num-threads=10 --max-requests=100 --test=memory --memory-block-size=8k --memory-total-size=32G--memory-oper=writerun而對于IO測試而言,是有些區別的,因為會有準備數據(比如寫一個臨時文件),所以會分成幾個階段,準備階段,運行階段,清理階段。
下面就是一個相對簡單的場景,20個文件,每個10GB,隨機讀寫,文件大小總量在200G.
/usr/local/bin/sysbench --file-num=20 --num-threads=20 --test=fileio
--file-total-size=
200G--max-requests=1000000 --file-test-mode=rndrwprepare
/usr/local/bin/sysbench --file-num=20 --num-threads=20
--test=fileio --file-total-size=
200G--max-requests=1000000 --file-test-mode=rndrwrun
/usr/local/bin/sysbench --file-num=20
--num-threads=20 --test=fileio --file-total-size=
200G--max-requests=1000000 --file-test-mode=rndrwcleanup硬件類的測試,基本一次測試就能夠得到一個基線數據,就不需要反反復復測試了。而對于DBA還是開發同學而言,更加關注于業務層面,我們會從很多可能的角度和場景去分析權衡,這些sysbench也是支持的,就是oltp選項。
當然sysben對于mysql的支持是原生的,而對于其他的數據oracle,PostgreSQL等數據,需要單獨配置。
因為應用測試會產生基礎數據,所以也是分為多階段的。
比如準備基礎數據,進行壓力測試,最后的統計結果和后期的清理。這里值得說的是,對于較低版本的sysbench而言,還不支持多表參數--oltp_tables_count,準備好基礎數據,后面就會開啟多線程模式進行模擬壓力的測試。比如下面的命令,測試模式complex,并發線程數30,最大請求數5000000 ,表的數據量在一億。先創建一個測試庫sysbenchtest,測試完成之后刪除即可。
mysql -uroot -e "create database if not exists sysbenchtest"
/usr/local/bin/sysbench --mysql-user=root --test=oltp
--mysql-host=localhost --oltp-test-mode=complex
--mysql-table-engine=innodb --oltp-table-size=100000000
--mysql-db=sysbenchtest --oltp-table-name=innodb_test --num-threads=30
--max-requests=5000000
prepare
/usr/local/bin/sysbench
--mysql-user=root --test=oltp --mysql-host=localhost
--oltp-test-mode=complex --mysql-table-engine=innodb
--oltp-table-size=100000000 --mysql-db=sysbenchtest
--oltp-table-name=innodb_test --num-threads=30 --max-requests=5000000
run
mysql -uroot -e "drop table if exists sysbenchtest.innodb_test; drop database if exists sysbenchtest"
在一臺服務器上我進行了測試,發現1億左右的數據,數據文件在24G左右。
-rw-r----- 1 mysql mysql 61 Mar 10 11:20 db.opt
-rw-r----- 1 mysql mysql 8632 Mar 10 11:20 innodb_test.frm
-rw-r----- 1 mysql mysql 24419237888 Mar 10 13:29 innodb_test.ibd
得到的報告如下,可以看到整個過程持續了近3個小時,TPS在455左右,其實還是不高的。
對于壓力測試,其實一個蠻不錯的想法,就是我指定壓測的策略,然后讓它去在后臺運行,MGR測試腳本已經寫好,會在測試之后共享給大家,這樣一來,我可以在瞬間創建出多個節點,然后測試很多復雜的壓力場景。到時候我就直接查看數據,得到一個報告,想想都很有意思。
看完上述內容是否對您有幫助呢?如果還想對相關知識有進一步的了解或閱讀更多相關文章,請關注億速云行業資訊頻道,感謝您對億速云的支持。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。