資料庫壓力測試工具tiobench,orion,lmbench,netperf
1. Tiobench 基於檔案系統的IO壓力測試
下載:
解壓縮: tar xzvf tiobench-0.3.3.tar.gz
再進入到tiobench-0.3.3目錄中
Make
Make install
IO測試(對檔案系統讀寫測試工具)可以使用以下命令取得幫助。
./tiotest -h
使用預定義或者可配置測試可以使用可以命令獲取幫助。
./tiobench.pl –help
執行可以如下:tiobench.pl其實只是包裝了一層,裡面呼叫了tiotest
./tiobench.pl –block 4 –random 10000 –numruns 5 –threads 10 –size 2048
上面這句話的意思是:
1個塊大小為4位元組 ,10個執行緒,執行10000個隨機IO,寫2048MB資料,共執行5次。
測試完之後可以看到產生的測試報告如下:
Unit information================
File size = megabytes Blk Size = bytes Rate = megabytes per second CPU% = percentage of CPU used during the test Latency = milliseconds Lat% = percent of requests that took longer than X seconds CPU Eff = Rate divided by CPU% – throughput per cpu load Sequential Reads 2.6.18-164.el5 1024 4 10 4.94 8210.% 0.004 7.27 0.00000 0.00000 0 Random Reads 2.6.18-164.el5 1024 4 10 4.64 7483.% 0.004 0.04 0.00000 0.00000 0 Sequential Writes 2.6.18-164.el5 1024 4 10 2.21 9521.% 0.015 11.56 0.00000 0.00000 0 Random Writes 2.6.18-164.el5 1024 4 10 0.02 98.51% 0.012 0.06 0.00000 0.00000 0 |
想知道各行分別代表什麼含義,請執行:./tiosum.pl可以得到各行的TIILE。感覺這個地方很山寨。
組裝一下就是:
Unit information================
File size = megabytes Blk Size = bytes Rate = megabytes per second CPU% = percentage of CPU used during the test Latency = milliseconds Lat% = percent of requests that took longer than X seconds CPU Eff = Rate divided by CPU% – throughput per cpu load Sequential Reads File Blk Num Avg Maximum Lat% Lat% CPU Kernel Size Size Thr Rate (CPU%) Latency Latency >2s >10s Eff —————————- —— —– — ———————————————————— 2.6.18-164.el5 1024 4 10 4.94 8210.% 0.004 7.27 0.00000 0.00000 0 Random Reads File Blk Num Avg Maximum Lat% Lat% CPU Kernel Size Size Thr Rate (CPU%) Latency Latency >2s >10s Eff —————————- —— —– — ———————————————————— 2.6.18-164.el5 1024 4 10 4.64 7483.% 0.004 0.04 0.00000 0.00000 0 Sequential Writes File Blk Num Avg Maximum Lat% Lat% CPU Kernel Size Size Thr Rate (CPU%) Latency Latency >2s >10s Eff —————————- —— —– — ———————————————————— 2.6.18-164.el5 1024 4 10 2.21 9521.% 0.015 11.56 0.00000 0.00000 0 Random Writes File Blk Num Avg Maximum Lat% Lat% CPU Kernel Size Size Thr Rate (CPU%) Latency Latency >2s >10s Eff —————————- —— —– — ———————————————————— 2.6.18-164.el5 1024 4 10 0.02 98.51% 0.012 0.06 0.00000 0.00000 0 |
發現一個讀IO只要0.004毫秒,非常快,這是因為IO是基於檔案系統cache的,其實測試的是記憶體,並非檔案系統。所以,可以使用下面一個工具來測試IO。
2. 使用Orion做基於裸裝置的IO壓力測試
下載,需要一個OTN的免費帳號。
下載安裝之後,可以以下命令獲取幫助:
./orion_linux_x86-64 –help
為了避免檔案系統cache,我們可以將需要測試的目錄先進行umount
如:我要測試的目錄為/data/對應的盤為/dev/sda8(對映關係儲存在/etc/fstab中)
先執行:
umount /data
然後執行命令,命令執行完成後,再執行mount /data即可重新mount回來。
mount /data
測試如下:
2.1資料庫OLTP型別,假定IO型別全部是8K隨機操作,壓力型別,自動加壓,從小到大,一直到儲存壓力極限。讀寫比各為50%
2.2.1 測試8KB的塊,這個是資料庫塊大小
建立一個檔名為zhoucang8k.lun的檔案,內容為/dev/sda8
./orion_linux_x86-64 -run advanced -testname zhoucang8k -size_small 8 -size_large 8 -type rand -write 50 &
這裡能夠得到一些報告如下:
檔案1:zhoucang8k_20110520_1757_lat.csv表示每個IO的延時,1,2,3,4,5分別代表併發數 | ||||||||||||||||||||||||
|
檔案2:zhoucang8k_20110520_1757_iops.csvIOPS的能力,1,2,3,4,5分別代表併發數。 | ||||||||||||||||||||||||
|
檔案3:zhoucang8k_20110520_1757_mbps.csv IO吞吐量,單位:MB/每秒 | |||||||||||||||||||||
|
還有兩個檔案trace檔案內容較長,這裡不貼了,另一個summary檔案如下:
檔案4:zhoucang8k_20110520_1757_summary.txt |
ORION VERSION 11.1.0.7.0Commandline:
-run advanced -testname zhoucang8k -size_small 8 -size_large 8 -type rand -write 50 This maps to this test: Test: zhoucang8k Small IO size: 8 KB Large IO size: 8 KB IO Types: Small Random IOs, Large Random IOs Simulated Array Type: CONCAT Write: 50% Cache Size: Not Entered Duration for each Data Point: 60 seconds Small Columns:, 0 Large Columns:, 0, 1, 2 Total Data Points: 8 Name: /dev/sda8 Size: 1053115467264 1 FILEs found. Maximum Large MBPS=3.72 @ Small=0 and Large=2 Maximum Small IOPS=842 @ Small=5 and Large=0 Minimum Small Latency=3.55 @ Small=1 and Large=0 |
2.2.2 測試128KB的隨機IO,這個是db_file_multiblock_read_count的預設值。
建立一個檔名為zhoucang128k.lun的檔案,內容為/dev/sda8
./orion_linux_x86-64 -run advanced -testname zhoucang128k -size_small 128 -size_large 128 -type rand -write 50 &
結果(見附件):
Maximum Large MBPS=29.11 @ Small=0 and Large=2
Maximum Small IOPS=311 @ Small=5 and Large=0
Minimum Small Latency=5.93 @ Small=1 and Large=0
2.2.3 測試1MB的隨機IO,這個是作業系統上能夠支援的最大IO。
建立一個檔名為zhoucang1024k.lun的檔案,內容為/dev/sda8
./orion_linux_x86-64 -run advanced -testname zhoucang1024k -size_small 1024-size_large 1024 –write 50 -type rand &
結果(見附件):
Maximum Large MBPS=109.76 @ Small=0 and Large=2
Maximum Small IOPS=135 @ Small=5 and Large=0
Minimum Small Latency=11.49 @ Small=1 and Large=0
2.2 IO吞吐量的測試,跟資料庫歸檔等相關。
2.2.1 資料庫吞吐量測試,假定IO全部是1M的序列性IO
./orion_linux_x86-64 -run advanced -testname zhoucang1m -size_small 1024 -size_large 1024 –write 50 -type seq &
IOPS:
Large/Small | 1 | 2 | 3 | 4 | 5 |
0 | 83 | 110 | 123 | 129 | 133 |
Lat:
Large/Small | 1 | 2 | 3 | 4 | 5 |
0 | 11.92 | 18.12 | 24.33 | 30.86 | 37.56 |
整完之後,可能需要重新建立檔案系統。因為/dev/sda8的label頭資訊被覆蓋了。
/etc/fstab內容如下
LABEL=/data /data ext3 defaults 1 2
執行以下命令建立檔案系統。
mkfs -t ext3 /dev/sda8
/etc/fstab中加入:
/dev/sda8 /data ext3 defaults 1 2
mount -a
3 Lmbench 記憶體測試:
下載一個Lmbench:
(裡面的連結,打不開)
tar xzvf lmbench-3.0-a9.tgz
lmbench-3.0-a9
make results
輸入1000,大概1G的記憶體測試。(這個值越大,測試結果越準確,同時,值大,測試的時間也會稍稍有點長)
其它引數可以自選,這裡我選擇了全部預設(調帶大小等引數),漫長的執行過程。。。。
測試完畢執行make see可得到以下四個檔案,
在result目錄下:percent.errs percent.out summary.errs summary.out
percent.errs和summary.errs
其它:具體如何使用這個工具呢?發現這個工具BIN目錄下有非常多的檔案,功能很強大,具體可以參看這個連結串列上面有詳細的介紹:
詳盡的測試結果見附件:
4 netperf針對網路做壓力測試
這個工具是由HP公司開發的,測試網路棧的一個工具,詳細的使用文件可以參看附件。
從官方網下載一個netperf,登入:
複製檔案:netperf-2.4.5.tar.gz
執行
Tar xzvf netperf-2.4.5.tar.gz
cd netperf-4.0.0rc2
Mkdir bin
./configure –prefix /root/zhoucang/netperf-2.4.5/bin
檢測安裝平臺的目標特徵的,能夠直接linux下的makefile,
再執行make和make install
安裝完成之後,進入安裝目錄的 bin目錄。
執行以下命令可以檢視幫助:
./netperf –help
4.1批次(bulk)網路流量的效能
批次資料傳輸典型的例子有ftp和其它類似的網路應用(即一次傳輸整個檔案)。根據使用傳輸協議的不同,批次資料傳輸又分為TCP批次傳輸和UDP批次傳輸。
4.1.1 測試TCP_STREAM傳輸:
Netperf預設情況下進行TCP批次傳輸,即-t TCP_STREAM。測試過程中,netperf向netserver傳送批次的TCP資料分組,以確定資料傳輸過程中的吞吐量:
測試結果如下
[root@tstpay1 bin]# ./netperf -H 10.253.34.8 -l 60TCP STREAM TEST from 0.0.0.0 (0.0.0.0) port 0 AF_INET to 10.253.34.8 (10.253.34.8) port 0 AF_INET
Recv Send Send Socket Socket Message Elapsed Size Size Size Time Throughput bytes bytes bytes secs. 10^6bits/sec 87380 16384 16384 60.03 949.29 |
從netperf的結果輸出中,我們可以知道以下的一些資訊:
1) 遠端系統(即server)使用大小為87380位元組的socket接收緩衝
2) 本地系統(即client)使用大小為16384位元組的socket傳送緩衝
3) 向遠端系統傳送的測試分組大小為16384位元組
4) 測試經歷的時間為60.03秒
5) 吞吐量的測試結果為949.29Mbits/秒
4.1.2 UDP_STREAM的測試
UDP_STREAM用來測試進行UDP批次傳輸時的網路效能。需要特別注意的是,此時測試分組的大小不得大於socket的傳送與接收緩衝大小,否則netperf會報出錯提示:
執行:./netperf -t UDP_STREAM -H 10.253.34.8 -l 60
執行結果如下:
[root@tstpay1 bin]# ./netperf -t UDP_STREAM -H 10.253.34.8 -l 60UDP UNIDIRECTIONAL SEND TEST from 0.0.0.0 (0.0.0.0) port 0 AF_INET to 10.253.34.8 (10.253.34.8) port 0 AF_INET
Socket Message Elapsed Messages Size Size Time Okay Errors Throughput bytes bytes secs # # 10^6bits/sec 262144 65507 60.00 110099 0 961.62 129024 60.00 110098 961.61 |
UDP_STREAM方式的結果中有兩行測試資料,第一行顯示的是本地系統的傳送統計,這裡的吞吐量表示netperf向本地socket傳送分組的能力。但是,我們知道,UDP是不可靠的傳輸協議,傳送出去的分組數量不一定等於接收到的分組數量。
第二行顯示的就是遠端系統接收的情況,由於client與server直接連線在一起,而且網路中沒有其它的流量,所以本地系統傳送過去的分組幾乎都被遠端系統正確的接收了,遠端系統的吞吐量也幾乎等於本地系統的傳送吞吐量。但是,在實際環境中,一般遠端系統的socket緩衝大小不同於本地系統的socket緩衝區大小,而且由於UDP協議的不可靠性,遠端系統的接收吞吐量要遠遠小於傳送出去的吞吐量。
4.2 請求/應答(request/response)網路流量的效能
另一類常見的網路流量型別是應用在client/server結構中的request/response模式。在每次交易(transaction)中,client向server發出小的查詢分組,server接收到請求,經處理後返回大的結果資料。
4.2.1 TCP_RR
TCP_RR方式的測試物件是多次TCP request和response的交易過程,但是它們發生在同一個TCP連線中,這種模式常常出現在資料庫應用中。資料庫的client程式與server程式建立一個TCP連線以後,就在這個連線中傳送資料庫的多次交易過程。
[root@tstpay1 bin]# ./netperf -t TCP_RR -H 10.253.34.8TCP REQUEST/RESPONSE TEST from 0.0.0.0 (0.0.0.0) port 0 AF_INET to 10.253.34.8 (10.253.34.8) port 0 AF_INET
Local /Remote Socket Size Request Resp. Elapsed Trans. Send Recv Size Size Time Rate bytes Bytes bytes bytes secs. per sec 16384 87380 1 1 10.00 11294.81 |
Netperf輸出的結果也是由兩行組成。第一行顯示本地系統的情況,第二行顯示的是遠端系統的資訊。平均的交易率(transaction rate)為11294.81次/秒。注意到這裡每次交易中的request和response分組的大小都為1個位元組,不具有很大的實際意義。使用者可以透過測試相關的引數來改變request和response分組的大小,TCP_RR方式下的引數如下表所示:
引數 | 說明 |
-s size | 設定本地系統的socket傳送與接收緩衝大小 |
-S size | 設定遠端系統的socket傳送與接收緩衝大小 |
-r req,resp | 設定request和reponse分組的大小 |
-D | 對本地與遠端系統的socket設定TCP_NODELAY選項 |
透過使用-r引數,我們可以進行更有實際意義的測試:
#./netperf -t TCP_RR -H 10.253.34.8 — -r 32,1024TCP REQUEST/RESPONSE TEST from 0.0.0.0 (0.0.0.0) port 0 AF_INET to 10.253.34.8 (10.253.34.8) port 0 AF_INET
Local /Remote Socket Size Request Resp. Elapsed Trans. Send Recv Size Size Time Rate bytes Bytes bytes bytes secs. per sec 16384 87380 32 1024 10.00 8955.26 16384 87380 |
從結果中可以看出,由於request/reponse分組的大小增加了,導致了交易率明顯的下降。注:相對於實際的系統,這裡交易率的計算沒有充分考慮到交易過程中的應用程式處理時延,因此結果往往會高於實際情況。
4.2.2 TCP_CRR
與TCP_RR不同,TCP_CRR為每次交易建立一個新的TCP連線。最典型的應用就是HTTP,每次HTTP交易是在一條單獨的TCP連線中進行的。因此,由於需要不停地建立新的TCP連線,並且在交易結束後拆除TCP連線,交易率一定會受到很大的影響。
[root@tstpay1 bin]# ./netperf -t TCP_CRR -H 10.253.34.8TCP Connect/Request/Response TEST from 0.0.0.0 (0.0.0.0) port 0 AF_INET to 10.253.34.8 (10.253.34.8) port 0 AF_INET
Local /Remote Socket Size Request Resp. Elapsed Trans. Send Recv Size Size Time Rate bytes Bytes bytes bytes secs. per sec 16384 87380 1 1 10.00 4607.63 16384 87380 |
即使是使用一個位元組的request/response分組,交易率也明顯的降低了,只有4607.63次/秒。TCP_CRR使用與TCP_RR相同的區域性引數。
4.2.3 UDP_RR
UDP_RR方式使用UDP分組進行request/response的交易過程。由於沒有TCP連線所帶來的負擔,所以我們推測交易率一定會有相應的提升。
[root@tstpay1 bin]# ./netperf -t UDP_RR -H 10.253.34.8UDP REQUEST/RESPONSE TEST from 0.0.0.0 (0.0.0.0) port 0 AF_INET to 10.253.34.8 (10.253.34.8) port 0 AF_INET
Local /Remote Socket Size Request Resp. Elapsed Trans. Send Recv Size Size Time Rate bytes Bytes bytes bytes secs. per sec 262144 262144 1 1 10.00 11367.45 129024 129024 |
結果證實了我們的推測,交易率為11367.45次/秒,高過TCP_RR的數值。不過,如果出現了相反的結果,即交易率反而降低了,也不需要擔心,因為這說明了在網路中,路由器或其它的網路裝置對UDP採用了與TCP不同的緩衝區空間和處理技術。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/31397003/viewspace-2147936/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- [資料庫]000 - ?Sysbench 資料庫壓力測試工具資料庫
- NewSQL資料庫壓力測試工具系列——SysbenchSQL資料庫
- mysql之 mysql資料庫壓力測試工具(mysqlslap)MySql資料庫
- 壓力測試工具
- nosql redis資料庫壓力測試基準工具redis-benchmarkSQLRedis資料庫
- 關於資料庫壓力測試的故事資料庫
- 【工具】ORION I/O 測試工具
- Oracle ORION IO 測試工具Oracle
- 一次資料庫壓力測試的故事資料庫
- 使用orastress!進行資料庫壓力測試(zt)AST資料庫
- 壓力測試工具之FIO
- 壓力測試工具之mysqlslapMySql
- 網站壓力測試工具網站
- Mysql 壓力測試工具sysbenchMySql
- apache ab壓力測試工具-批次壓測指令碼Apache指令碼
- 10大主流壓力測試工具
- HTTP/FTP壓力測試工具siegeHTTPFTP
- Nginx壓力測試工具之WebBenchNginxWeb
- Web網站壓力測試工具Web網站
- 超實用壓力測試工具-ab工具
- 讓測試事半功倍軟體壓力測試工具分享,壓力測試報告怎麼收費?測試報告
- 效能測試工具Lmbench的使用和下載
- 三種web效能壓力測試工具Web
- 分散式TCP壓力測試工具 tcpcopy分散式TCP
- MySQL基準壓力測試工具MySQLSlapMySql
- 併發網站壓力測試工具網站
- 開源的負載測試/壓力測試工具 NBomber負載
- 軟體壓力測試流程和測試工具分享,讓你寫壓力測試報告再也不愁測試報告
- ORION可以模式Oracle資料庫的IO測試IOPS,MBPS模式Oracle資料庫
- 軟體壓力測試知識分享,2022好用壓力測試工具有哪些?
- nodejs版的websocket壓力測試工具NodeJSWeb
- 10大主流壓力測試工具推薦
- Linux下使用壓力測試工具stressLinux
- SSL壓力測試工具THC-SSL-DOS
- Http壓力測試工具HttpTest4NetHTTP
- ORACLE壓力測試Oracle
- laravel壓力測試Laravel
- MACOSXApacheab壓力測試MacApache