sysbench應(yīng)該是使用最廣泛的MySQL性能壓測(cè)工具, 通常產(chǎn)生的壓測(cè)報(bào)告繪圖使用 excel 或 gnuplot 來繪制的;但用excel 生成圖表得手工黏貼數(shù)據(jù)再配置圖表,而用gnuplot得寫個(gè)配置文件蝶棋,都有些繁瑣沛善;最近逛 github 發(fā)現(xiàn)graph-cli這個(gè)畫圖工具铛漓,能從 csv 文件里生成圖片,遂搗鼓了下和sysbench 怎么配合使用~
繪圖 1--橫坐標(biāo)是線程數(shù)噩凹,縱坐標(biāo)是 qps 值
假設(shè)壓測(cè)線程數(shù)是 1挫以、8谬莹、16诫惭、32翁锡、64、128夕土,對(duì)應(yīng)的文件分別是 sb[1~8].log馆衔,先用如下命令生成 csv 文件:
cat sb*log | egrep " cat|threads:|queries:" | tr -d "\n" | sed 's/Number of threads: /\n/g' | sed 's/\[/\n/g' | sed 's/[A-Za-z\/]\{1,\}://g'| sed 's/ \.//g' | awk {'print $1 $3'} | sed 's/(/,/g' | sort -g| grep -v '^$' |sed '1i threads,cstat_on_qps' > cstat_on_qps.csv
產(chǎn)生的cstat_on_qps.csv
內(nèi)容會(huì)是這個(gè)樣子
threads,cstat_on_qps
1,2796.03
8,18799.03
16,30722.64
32,42044.25
64,51911.20
128,57427.69
再使用 graph-cli畫圖
graph cstat_off_qps.csv -T read_write -o read_write.png
最后效果如下
繪圖 2--多個(gè)測(cè)試場(chǎng)景對(duì)比圖
像上面那樣單一數(shù)據(jù)繪圖還是比較少見的,大部分繪制的是對(duì)比圖怨绣,譬如 MySQL 不同版本的對(duì)比圖角溃、新老硬件性能的對(duì)比圖;可以這樣生成:
graph cstat_off.csv -s --chain | graph physics.csv -s -T read_write -o read_write.png
cstat_off.csv
和physics.csv
分別是 MySQL 在c-state關(guān)閉篮撑、不關(guān)閉情形下的壓測(cè)數(shù)據(jù), csv還是按照第一個(gè)繪圖例子的命令生成减细;最終效果如下:
當(dāng)然也可以更多的數(shù)據(jù)組合,譬如這樣:
繪圖 3--按時(shí)間繪制
有時(shí)我們想看 MySQL 長(zhǎng)時(shí)間的壓測(cè)是否有性能抖動(dòng), 可以按照時(shí)間軸來繪制:
grep 'thds:' sb_test.log | cut -d ' ' -f 2,9 | sed 's/ /,/g'| sed '1i time,cstat_on_qps' > qps_trend.csv
樣本數(shù)據(jù)如下:
time,cstat_on_qps
1s,52826.22
2s,53053.49
3s,51781.75
4s,52301.09
5s,54180.96
6s,46002.01
7s,45567.34
8s,40647.22
9s,42120.07
10s,45959.82
11s,46372.70
12s,45708.86
13s,46581.92
14s,46930.91
15s,46604.24
16s,45604.54
17s,46088.76
18s,45702.33
19s,46750.68
20s,46914.81
21s,47485.07
22s,44935.59
23s,38392.21
24s,36965.36
25s,46108.86
26s,46813.07
......
同樣生成圖表:
graph -s qps_trend.csv -T qps_trend
從圖就能很直觀看出性能抖動(dòng)隨時(shí)間變化還是蠻大的~