tpcc-mysql 對percona5.6進行壓力測試

來源:互聯網
上載者:User

標籤:mysql tpcc-mysql

    由於測試環境使用的是經過裁剪過的線上環境的ISO鏡像,所以在初始階段碰到了很多問題:

第一個錯誤:# cd /root/tpcc-mysql/src && makecc -w -O2 -g -I. `mysql_config --include`  -c load.ccc -w -O2 -g -I. `mysql_config --include`  -c support.ccc load.o support.o `mysql_config --libs_r` -lrt -o ../tpcc_load/usr/bin/ld: cannot find -lsslcollect2: ld returned 1 exit statusmake: *** [../tpcc_load] Error 1    解決方案:安裝openssl-devel    第二個錯誤:    libperconaserverclient.so報錯,貌似/etc/ld.so.conf.d/mysql.conf定義沒有生效,不知道為什麼!# ln -sv /opt/mysql/lib/libperconaserverclient.so.18.1.0 /usr/lib64/libperconaserverclient.so    另外,在/root/mysql-tpcc/load中也可以直接定義lib    export LD_LIBRARY_PATH=/opt/mysql/lib    第三個錯誤:    當使用tpcc_load載入完資料,進行壓力測試時,卻報錯"Segmentation fault" ,    搜尋資料發現,大概意思是許可權問題,    使用echo "0" > /proc/sys/kernel/randomize_va_space命令無效    在重新編譯tpcc_load也無效的情況,只能挨個測試環境的問題。    首先,在rpm安裝的mysql-5.1.73上面可以正常使用,確定了不是tpcc-mysql版本問題;    接著,在rpm安裝的percona-5.6上面可以正常使用,確定了不是percona-5.6的問題;    最後,當然從自身找原因,無奈水平有限!        多次測試後,發現使用"/opt/mysql/support-files/binary-configure"產生的表,不會再有錯誤產生。、u    查看其資訊,“./scripts/mysql_install_db --no-defaults”            ——“Don‘t read default options from any option file.”    相比我不加任何參數的去初始化,這裡依然會去讀取/etc/my.cnf,    所以依然不明所以!但是至少目前能夠使用了!    第四個錯誤:    在匯入表結構後,不要立即加索引,因為網上大部分資料都是這麼寫的。這會加長匯入資料的時間。    另外,還不明白的一點是,一次tpcc_load後的資料庫,能不能多次tpcc_start使用?


OK,tpcc-mysql  start:

# mysqladmin create tpcc1000; # mysql tpcc1000 < create_table.sql;# ./tpcc_load 127.0.0.1:3306 tpcc1000 root "" 100 # mysql tpcc1000 < add_fkey_idx.sql# ./tpcc_start -h127.0.0.1 -P3306 -d tpcc1000 -uroot   -c 23 -r 3600 -l 10800 -w 500 > tpcc100.log  # 葉金榮部落格提到對於SSD需要測試1000個倉庫才能測出準確的結果,但目前情況緊急,所以折半!鑒於第一次測試,所以壓測時間縮短為3個小時。


Done!

    結果詳解解讀:http://imysql.cn/2014/10/10/tpcc-mysql-full-user-manual.shtml

New-Order:新訂單,一次完整的訂單事務,幾乎涉及到全部表Payment:支付,主要對應 orders、history 表Order-Status:訂單狀態,主要對應 orders、order_line 表Delivery:發貨,主要對應 order_line 表Stock-Level:庫存,主要對應 stock 表其他相關表:客戶:主要對應 customer 表地區:主要對應 district 表商品:主要對應 item 表倉庫:主要對應 warehouse 表


結果分析

 120, 8819(0):2.147|2.327, 8820(0):0.424|0.568, 882(0):0.208|0.237, 881(0):2.483|2.561, 883(0):7.025|7.405 -- 以“逗號”分隔,共6列-- 第一列,第N次10秒-- 第二列,新訂單成功執行壓測的次數(括弧內,延遲執行壓測的次數):90%事務的回應時間|本輪測試最大回應時間,        新訂單事務數也被認為是總有效事務數的指標,也就是在這10秒內總共完成的多少次完整的事務。-- 第三列,支付業務成功執行次數(延遲執行次數):90%事務的回應時間|本輪測試最大回應時間-- 第四列,訂單狀態業務的結果,後面幾個的意義同上-- 第五列,物流發貨業務的結果,後面幾個的意義同上-- 第六列,庫存倉儲業務的結果,後面幾個的意義同


最終成績:

 (all must be [OK])       -- 下面所有商務邏輯結果都必須為 OK 才行 [transaction percentage]        Payment: 43.47% (>=43.0%) [OK]      -- 支付成功次數(上述統計結果中 sc + lt)必須大於43.0%,否則結果為NG,而不是OK   Order-Status: 4.35% (>= 4.0%) [OK]       -- 訂單狀態,其他同上       Delivery: 4.35% (>= 4.0%) [OK]       -- 發貨,其他同上    Stock-Level: 4.35% (>= 4.0%) [OK]       -- 庫存,其他同上 [response time (at least 90% passed)]      -- 響應耗時指標必須超過90%通過才行      New-Order: 100.00%  [OK]              -- 下面幾個響應耗時指標全部 100% 通過        Payment: 100.00%  [OK]   Order-Status: 100.00%  [OK]       Delivery: 100.00%  [OK]    Stock-Level: 100.00%  [OK]                 50294.500 TpmC                                     -- TpmC結果值,Tpm表示transaction per minute,每分鐘已執行的事務總量,而C表示基準測試!                 (每分鐘事務數,該值是“第一次統計結果”中的新訂單事務數除以總耗時分鐘數,例如本例中是:100589/2 = 50294.500)


結果出來後,需要做成圖形,首先得先將需要的資料截取出來:這裡取得是第一列的時間和第二列的已完成事務數量。

# vim tpcc-output-analyze.sh#!/bin/shTIMESLOT=1if [ -n "$2" ]thenTIMESLOT=$2ficat $1 | grep -v HY000 | grep -v payment | grep -v neword | awk -v timeslot=$TIMESLOT ‘BEGIN { FS="[,():]"; s=0; cntr=0; aggr=0 } /MEASURING START/ { s=1} /STOPPING THREADS/ {s=0} /0/ { if (s==1) { cntr++; aggr+=$2; } if ( cntr==timeslot ) { printf ("%d %3d\n",$1,(aggr/timeslot)) ; cntr=0; aggr=0 } }‘


然後,就是圖形工具的操作了:

# vim log.confset terminal gif small size 1024,768 #指定輸出成gif圖片,且圖片大小為550×25set output "performance_fenxibaogao_dierci" #指定產生的gif圖片的檔案名稱set title "MySQL transaction performance"   #圖片標題set style data lines                    #顯示網格set xlabel "The N ge ten second"    #X軸標題set ylabel "transaction completed shuliang" #Y軸標題set grid                            #顯示網格plot "tpcc-graphic-data.txt" using 1:2 title "transactions_completed_shuliang  per  ten second" with lines     # 從tpcc-graphic-data.txt檔案中讀取第一列和第二列作為X軸和Y軸資料,     # 樣本名"Total throughput"


tpcc-mysql  壓力測試出圖操作:

# tpcc-output-analyze.sh tpcc1000.log > tpcc-graphic-data.txt# cat log.conf | gnuplot 注意:gnulot安裝時,不需要圖形介面,你可以在伺服器上安裝後,再拉到本地,當然線上是不可能的了!




壓力測試時,當然不能忘記使用其他方式統計qps,因為qp10s的波動有點大,(以下又是抄的高效能mysql中的內容,呵呵!)

#vim qps.sh#!/bin/bashINTERVAL=5PREFIX=$INTERVAL-sec-statusRUNFILE=/tmp/runningmysql -e ‘SHOW GLOBAL VARIABLES‘ >> mysql-variableswhile test -e $RUNFILE;dofile=$(date  +%F_%I)sleep=$(date +%s.%N |awk "{print $INTERVAL - (\$1 % $INTERVAL)}")sleep $sleepts="$(date   +"TS %s.%N %F %T")"loadavg="$(uptime)"echo "$ts $loadavg" >> $PREFIX-${file}-statusmysql -e ‘SHOW GLOBAL STATUS‘ >> $prefix-${file}-status &echo "$ts $loadavg" >> $PREFIX-${file}-innodbstatusmysql -e ‘SHOW ENGINE INNODB STATUS\G‘ >> $PREFIX-${file}-innodb-status &echo "$ts $loadavg" >> $PREFIX-${file}-processlistmysql -e ‘SHOW FULL PROCESSLIST\G‘ >> $PREFIX-${file}-processlist &echo $tsdoneecho Exiting because $RUNFILE does not exist


正如作者所言,注意這裡的sleep的技巧!


下面是qps分析指令碼:

# vim fenxi.sh#!/bin/bashawk ‘BEGIN{printf "#ts date time load QPS";fmt= "%.2f";}/^TS/{ # The timestamp lines begin with TS.ts= substr($2,1,index($2,"." - 1);load= NF - 2;diff= ts - prev_ts;prev_ts= ts;printf "\n%s %s %s %s", ts, $3, $4, substr($load, 1, length($load)-1);}/Queries/ {printf fmt, ($2-Queries)/diff;Queries= $2}‘ "[email protected]"















本文出自 “Go right on” 部落格,請務必保留此出處http://caduke.blog.51cto.com/3365689/1657450

tpcc-mysql 對percona5.6進行壓力測試

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.