Linux性能測試工具有什么好用的工具,這里推薦一款
1. 前言
本文主要講解如何使用sysbench這款軟件對Linux服務器進行基準測試,它支持CPU、線程、內(nèi)存、數(shù)據(jù)庫壓力測試,是程序開發(fā)專業(yè)人員經(jīng)常使用的一款基準壓力測試軟件。

2. 基準測試與壓力測試
基準測試可以理解為針對系統(tǒng)的一種壓力測試。但基準測試不關(guān)心業(yè)務邏輯,更加簡單、直接、易于測試,數(shù)據(jù)可以由工具生成,不要求真實;而壓力測試一般考慮業(yè)務邏輯(如購物車業(yè)務),要求真實的數(shù)據(jù)。
3. 基準測試的作用
對于多數(shù)Web應用,整個系統(tǒng)的瓶頸在于數(shù)據(jù)庫;原因很簡單:Web應用中的其他因素,例如網(wǎng)絡帶寬、負載均衡節(jié)點、應用服務器(包括CPU、內(nèi)存、硬盤燈、連接數(shù)等)、緩存,都很容易通過水平的擴展(俗稱加機器)來實現(xiàn)性能的提高。而對于MySQL,由于數(shù)據(jù)一致性的要求,無法通過增加機器來分散向數(shù)據(jù)庫寫數(shù)據(jù)帶來的壓力;雖然可以通過前置緩存(Redis等)、讀寫分離、分庫分表來減輕壓力,但是與系統(tǒng)其它組件的水平擴展相比,受到了太多的限制。
而對數(shù)據(jù)庫的基準測試的作用,就是分析在當前的配置下(包括硬件配置、OS、數(shù)據(jù)庫設(shè)置等),數(shù)據(jù)庫的性能表現(xiàn),從而找出MySQL的性能閾值,并根據(jù)實際系統(tǒng)的要求調(diào)整配置。
4. 基準測試的指標
數(shù)據(jù)庫指標
- TPS/QPS:衡量吞吐量。
- 響應時間:包括平均響應時間、最小響應時間、最大響應時間、時間百分比等,其中時間百分比參考意義較大,如前95%的請求的最大響應時間。。
- 并發(fā)量:同時處理的查詢請求的數(shù)量。
5. 基準測試的分類
對MySQL的基準測試,有如下兩種思路:
- 針對整個系統(tǒng)的基準測試:通過http請求進行測試,如通過瀏覽器、APP或postman等測試工具。該方案的優(yōu)點是能夠更好的針對整個系統(tǒng),測試結(jié)果更加準確;缺點是設(shè)計復雜實現(xiàn)困難。
- 只針對MySQL的基準測試:優(yōu)點和缺點與針對整個系統(tǒng)的測試恰好相反。
在針對MySQL進行基準測試時,一般使用專門的工具進行,例如mysqlslap、sysbench等。其中,sysbench比mysqlslap更通用、更強大,且更適合Innodb(因為模擬了許多Innodb的IO特性),下面介紹使用sysbench進行基準測試的方法。
6. 安裝sysbench
7. 使用sysbench測試系統(tǒng)性能
軟件安裝完成后,就要開始測試各種性能了,測試的方法官網(wǎng)網(wǎng)站上也提到一些,但涉及到 OLTP 測試的部分卻不夠準確。在這里我大致提一下:
7.1 cpu性能測試
自己可以根據(jù)機器cpu的性能來適當調(diào)整數(shù)值。如下二圖查看CPU配置!
- [root@zcwyou ~]# cat /proc/cpuinfo

sysbench01.png
7.2 執(zhí)行以下命令,進行CPU測試
[root@zcwyou ~]# sysbench --test=cpu --cpu-max-prime=20000 run

sysbench進行CPU測試
cpu測試主要是進行素數(shù)的加法運算,在下圖例子中,指定了最大的質(zhì)數(shù)發(fā)生器數(shù)量為 20000,可以看出服務器此次測試 執(zhí)行時間 大約為10.0005s秒7.3 線程測試
- [root@zcwyou ~]# sysbench --test=threads --num-threads=64 --thread-yields=100 --thread-locks=2 run
如下圖 (發(fā)送64次/個測試線程請求,每次/個線程請求產(chǎn)生/生成100個數(shù)量,每個線程的鎖數(shù)量為2) ,下圖的測試執(zhí)行時間為10.0051s秒

sysbench線程測試.png
7.4 內(nèi)存測試
- [root@zcwyou ~]# sysbench --test=memory --memory-block-size=8k --memory-total-size=4G run
上述參數(shù)指定了本次測試整個過程是在內(nèi)存中傳輸 4G 的數(shù)據(jù)量,每個 block 大小為 8K。測試結(jié)果如下圖:
執(zhí)行時間為0.3844秒,每秒傳輸速度為10586.47Mb每秒

sysbench內(nèi)存測試
7.5 OLTP測試
- [root@zcwyou ~]# sysbench --test=oltp --mysql-table-engine=myisam --oltp-table-size=1000000 --mysql-socket=/tmp/mysql.sock --mysql-user=test --mysql-host=localhost --mysql-password=test prepare
上述參數(shù)指定了本次測試的表存儲引擎類型為 myisam,這里需要注意的是,官方網(wǎng)站上的參數(shù)有一處有誤,即 --mysql-table-engine,官方網(wǎng)站上寫的是 --mysql-table-type,這個應該是沒有及時更新導致的。另外,指定了表最大記錄數(shù)為 1000000,其他參數(shù)就很好理解了,主要是指定登錄方式。測試 OLTP 時,可以自己先創(chuàng)建數(shù)據(jù)庫 sbtest,或者自己用參數(shù) --mysql-db 來指定其他數(shù)據(jù)庫。--mysql-table-engine 還可以指定為 innodb 等 MySQL 支持的表存儲引擎類型。
8. 總結(jié)
sysbench可以用于CPU、線程、內(nèi)存、數(shù)據(jù)庫壓力測試,是一個綜合性能的判斷工具,也往往用于判斷硬件和系統(tǒng)的穩(wěn)定性,應該是一款不錯的拷機軟件。