内射老阿姨1区2区3区4区_久久精品人人做人人爽电影蜜月_久久国产精品亚洲77777_99精品又大又爽又粗少妇毛片

如何使用sysbench對(duì)MySQL實(shí)施壓力測試

下面一起來了解下如何使用sysbench對(duì)MySQL實(shí)施壓力測試,相信大家看完肯定會(huì)受益匪淺,文字在精不在多,希望如何使用sysbench對(duì)MySQL實(shí)施壓力測試這篇短內(nèi)容是你想要的。

創(chuàng)新互聯(lián)公司是專業(yè)的克拉瑪依區(qū)網(wǎng)站建設(shè)公司,克拉瑪依區(qū)接單;提供成都網(wǎng)站設(shè)計(jì)、網(wǎng)站制作、外貿(mào)營銷網(wǎng)站建設(shè),網(wǎng)頁設(shè)計(jì),網(wǎng)站設(shè)計(jì),建網(wǎng)站,PHP網(wǎng)站建設(shè)等專業(yè)做網(wǎng)站服務(wù);采用PHP框架,可快速的進(jìn)行克拉瑪依區(qū)網(wǎng)站開發(fā)網(wǎng)頁制作和功能擴(kuò)展;專業(yè)做搜索引擎喜愛的網(wǎng)站,專業(yè)的做網(wǎng)站團(tuán)隊(duì),希望更多企業(yè)前來合作!

1.背景

出自percona公司,是一款多線程系統(tǒng)壓測工具,可以根據(jù)影響數(shù)據(jù)庫云服務(wù)器性能的各種因素來評(píng)估系統(tǒng)的性能。例如,可以用來測試文件IO,操作系統(tǒng)調(diào)度器,內(nèi)存分配和傳輸速度,POSIX線程以及數(shù)據(jù)庫云服務(wù)器等。sysbench支持Lua腳本語言,Lua對(duì)各種測試場景的設(shè)置可以非常靈活。sysbench支持MySQL,操作系統(tǒng)和硬件的測試。

2.安裝與使用

安裝:

curl -s https://packagecloud.io/install/repositories/akopytov/sysbench/script.rpm.sh | sudo bash
sudo yum -y install sysbench

使用:

數(shù)據(jù)準(zhǔn)備

#!/bin/sh
export LD_LIBRARY_PATH=/usr/local/mysql/lib/

. ~/.bash_profile

# 需要啟用DEBUG模式時(shí)將下面三行注釋去掉即可
#set -u
#set -x
#set -e

BASEDIR="/data/sysbench"    #創(chuàng)建sysbench文件目錄
if [ ! -d $BASEDIR ]
then
   mkdir $BASEDIR -p
fi
cd $BASEDIR                 #進(jìn)入sysbench文件目錄

# 記錄所有錯(cuò)誤及標(biāo)準(zhǔn)輸出到 sysbench.log 中
#exec 3>&1 4>&2 1>> sysbench_prepare.log 2>&1

DBIP=192.168.1.109
DBPORT=3109
DBUSER='proxysql'
DBPASSWD='123456'
NOW=`date +'%Y%m%d%H%M'`
DBNAME="sysbench"
TBLCNT=10           #表數(shù)量
WARMUP=300          #預(yù)熱時(shí)間(秒)
DURING=1800         #持續(xù)時(shí)間(秒)
ROWS=10000000       #每個(gè)表中插入1KW行數(shù)據(jù)
MAXREQ=1000000      #最大請(qǐng)求數(shù)為100W

#當(dāng)達(dá)到持續(xù)時(shí)間或者最大請(qǐng)求數(shù)時(shí),這一輪的測試就會(huì)停止

#創(chuàng)建sysbench專用的數(shù)據(jù)庫
echo 'now create db'
mysql -h$DBIP -P$DBPORT -u$DBUSER -p$DBPASSWD -e 'create database sysbench'
echo 'create ok'
## 數(shù)據(jù)準(zhǔn)備
echo 'now prepare data'
 sysbench /usr/share/sysbench/oltp_read_only.lua \    #必須附加lua腳本才可以初始化數(shù)據(jù)
 --mysql-host=$DBIP \
 --mysql-port=$DBPORT \
 --mysql-user=$DBUSER \
 --mysql-password=$DBPASSWD \
 --mysql-db=$DBNAME \
 --db-driver=mysql \
 --tables=10 \
 --table-size=$ROWS \
 --time=$DURING prepare

壓測開始

#!/bin/bash
##
##
## 葉金榮, 知數(shù)堂培訓(xùn)聯(lián)合創(chuàng)始人, 資深MySQL專家, MySQL布道師, Oracle MySQL ACE
##
## 幾個(gè)注意事項(xiàng):
## 1、運(yùn)行sysbench的客戶機(jī)和MySQL DB云服務(wù)器盡量不要在同一臺(tái)主機(jī)上,也包括一臺(tái)宿主機(jī)上啟動(dòng)兩個(gè)虛機(jī)的情形;
## 2、測試表的數(shù)量不宜太少,至少要求20個(gè)表以上;
## 3、每個(gè)表的數(shù)據(jù)量不宜太少,通常至少要求1千萬以上,當(dāng)然了,也要根據(jù)DB云服務(wù)器的配置適當(dāng)調(diào)整;
## 4、每次進(jìn)行基準(zhǔn)壓測的時(shí)長不宜過短,通常要求持續(xù)15分鐘以上;
## 5、每輪測試完畢后,中間至少暫停5分鐘,或者確認(rèn)系統(tǒng)負(fù)載完全恢復(fù)空跑狀態(tài)為止;
## 6、測試DB云服務(wù)器要是專用的,不能和其他業(yè)務(wù)混跑,否則測試結(jié)果就不靠譜了;
## 7、其余未盡事宜,后續(xù)再行補(bǔ)充。
##
## created by yejinrong@zhishutang.com
## 2017/6/3
##
## sysbench項(xiàng)目地址: https://github.com/akopytov/sysbench
##
####################### 2018/02/23  張銳志 ####################################
###葉老師原腳本僅適用于sysbench 0.5版本,sysbench升級(jí)到1.0后無法使用,現(xiàn)修改部分語法。

export LD_LIBRARY_PATH=/usr/local/mysql/lib/

. ~/.bash_profile

# 需要啟用DEBUG模式時(shí)將下面三行注釋去掉即可
#set -u
#set -x
#set -e

BASEDIR="/data/sysbench"
if [ ! -d $BASEDIR ]
then
   mkdir $BASEDIR -p
fi
cd $BASEDIR
#清理之前的遺留記錄
rm -rf $BASEDIR/logs*
# 記錄所有錯(cuò)誤及標(biāo)準(zhǔn)輸出到 sysbench.log 中
exec 3>&1 4>&2 1>> sysbench.log 2>&1

#時(shí)間單位秒
DBIP=192.168.1.109
DBPORT=3109
DBUSER='proxysql'
DBPASSWD='123456'
NOW=`date +'%Y%m%d%H%M'`
DBNAME="sysbench"
REPORT_INTERVAL=1
TBLCNT=10           #表數(shù)量
WARMUP=300          #預(yù)熱時(shí)間(秒)
DURING=1800         #持續(xù)時(shí)間(秒)
ROWS=10000000       #每個(gè)表中插入1KW行數(shù)據(jù)
MAXREQ=1000000      #最大請(qǐng)求數(shù)為100W

#當(dāng)達(dá)到持續(xù)時(shí)間或者最大請(qǐng)求數(shù)時(shí),這一輪的測試就會(huì)停止

# 并發(fā)壓測的線程數(shù),根據(jù)機(jī)器配置實(shí)際情況進(jìn)行調(diào)整
THERAD_NUMBER="8 64 128"

#初始次數(shù)
round=0
# 一般至少跑3輪測試,我正常都會(huì)跑10輪以上
while [ $round -lt 4 ]
do
#每回合日志位置:
rounddir=$BASEDIR/logs-round${round}
mkdir -p ${rounddir}

for thread in `echo "${THERAD_NUMBER}"`
do
#常用可選項(xiàng):
#oltp_read_only             #只讀
#oltp_read_write            #讀寫兼有
#oltp_update_non_index      #無主鍵更新情形
sysbench /usr/share/sysbench/oltp_read_only.lua \
  --mysql-host=$DBIP \
  --mysql-port=$DBPORT \
  --mysql-user=$DBUSER \
  --mysql-password=$DBPASSWD \
  --mysql-db=$DBNAME \
  --db-driver=mysql \
  --tables=$TBLCNT \
  --table-size=$ROWS \
  --report-interval=$REPORT_INTERVAL \
  --threads=${thread} \ 
  --rand-type=uniform \                 #數(shù)據(jù)隨機(jī)類型:uniform,均勻的
  --time=$DURING run >> ${rounddir}/sysbench_${thread}.log

sleep 300                   #不同的線程數(shù)壓測之間停頓5分鐘
done

round=`expr $round + 1`
sleep 300                   #每輪壓測之間停頓5分鐘
done

運(yùn)行完畢后在預(yù)設(shè)的數(shù)據(jù)目錄下可以找到sysbench輸出的日志。

如何使用sysbench對(duì)MySQL實(shí)施壓力測試

3.結(jié)果分析與繪圖

可以直接閱讀sysbench日志給出的總結(jié),也可以對(duì)其中個(gè)別項(xiàng)的數(shù)據(jù)進(jìn)行繪圖觀察趨勢。

SQL statistics:
    queries performed:
        read:                            142870
        write:                           0
        other:                           20410
        total:                           163280
    transactions:                        10205  (5.66 per sec.)
    queries:                             163280 (90.53 per sec.)
    ignored errors:                      0      (0.00 per sec.)
    reconnects:                          0      (0.00 per sec.)

General statistics:
    total time:                          1803.6625s
    total number of events:              10205

Latency (ms):
         min:                               3113.18
         avg:                              11303.55
         max:                              24222.47
         95th percentile:                  16819.24
         sum:                            115352747.29

Threads fairness:
    events (avg/stddev):           159.4531/1.51
    execution time (avg/stddev):   1802.3867/1.03
#我使用的是硬件資源十分有限的虛擬機(jī),壓測結(jié)果有點(diǎn)扎心。

安裝gnuplot進(jìn)行繪圖,gnuplot需要圖形環(huán)境,可以選擇在windows上安裝,也可以在施壓客戶機(jī)上安裝圖形界面。這里選擇在linux施壓客戶機(jī)上安裝圖形界面。

dnf -y install @xfce-desktop #安裝圖形界面

yum -y install gnuplot #安裝gnuplot

gnuplot  #進(jìn)入gnuplot終端

gnuplot>plot 'output/sysbench_8.log' using  9 w lines title 'QPS'
        #using 5 表示使用第5列數(shù)據(jù)作圖
        #with lines 定義圖中的趨勢使用線來表示
        #title 'QPS' 定義線的名稱
        #使用,(逗號(hào))分割,進(jìn)行多列數(shù)據(jù)的繪制

圖形如下:如何使用sysbench對(duì)MySQL實(shí)施壓力測試

通過其他腳本觀察sysbench壓測過程中的系統(tǒng)信息和數(shù)據(jù)庫信息(來源于《高可用 MySQL》)

#!/bin/sh
#開始前獲取全局配置參數(shù)
#每五秒獲取一次cpu load,MySQL全局信息,InnoDB引擎相關(guān)信息,線程信息 
INTERVAL=5
PREFIX=$INTERVAL-sec-status
RUNFILE=/root/running
mysql -e 'show global variables'>>mysql-variables

#通過檢測 /root/running文件是否存在作為是否進(jìn)行獲取信息的依據(jù),可以在壓測結(jié)束時(shí)刪除此文件停止收集
while  test -e $RUNFILE; do
        file=$(date +%F_%H)
        sleep=$(date +%s.%N |awk "{print $INTERVAL -(\$1 % $INTERVAL)}")
        sleep $sleep
        ts="$(date +"TS %s.%N %F %T")"
        loadavg="$(uptime)"                                 #通過uptime命令獲取cpu load
        echo "$ts $loadavg">> $PREFIX-${file}-status
        mysql -e "show global status" >> $PREFIX-${file}-status &   #獲取MySQL全局信息
        echo "$ts $loadavg">> $PREFIX-${file}-innodbstatus
        mysql -e "show engine innodb status\G" >> $PREFIX-${file}-innodbstatus &    #獲取引擎信息
        echo "$ts $loadavg">> $PREFIX-${file}-processlist
        mysql -e "show full processlist\G" >>$PREFIX-${file}-processlist &  #獲取線程信息
        echo $ts
done
echo Exiting because $RUNFILE not exist    

對(duì)上一步收集到的全局信息進(jìn)行分析。

#!/bin/sh
awk '
        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
                }
                ' "$@"

運(yùn)行方式:sh hi_anaylyze.sh 5-sec-status-2018-02-22_14_status >>4plot.log  (將分析后的結(jié)果記入4plot.log中)

同樣使用gnupot進(jìn)行繪圖分析:

gunplot>plot '4plot' using 5 with lines title 'QPS', 4 with lines title 'load'
        #using 5 表示使用第5列數(shù)據(jù)作圖
        #with lines 定義圖中的趨勢使用線來表示
        #title 'QPS' 定義線的名稱
        #使用,(逗號(hào))分割,進(jìn)行多列數(shù)據(jù)的繪制

如何使用sysbench對(duì)MySQL實(shí)施壓力測試

(兩個(gè)圖形的數(shù)據(jù)來源不同,僅作為示例使用。)

看完如何使用sysbench對(duì)MySQL實(shí)施壓力測試這篇文章后,很多讀者朋友肯定會(huì)想要了解更多的相關(guān)內(nèi)容,如需獲取更多的行業(yè)信息,可以關(guān)注我們的行業(yè)資訊欄目。

當(dāng)前標(biāo)題:如何使用sysbench對(duì)MySQL實(shí)施壓力測試
網(wǎng)頁地址:http://www.rwnh.cn/article10/ggohgo.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供軟件開發(fā)、企業(yè)網(wǎng)站制作、網(wǎng)站內(nèi)鏈、全網(wǎng)營銷推廣網(wǎng)站營銷、搜索引擎優(yōu)化

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)

搜索引擎優(yōu)化
衡阳市| 江川县| 呈贡县| 长海县| 洛扎县| 南雄市| 新密市| 福州市| 县级市| 孝感市| 齐河县| 瓦房店市| 阳春市| 维西| 湖北省| 东山县| 旬邑县| 翼城县| 涟水县| 望谟县| 宁城县| 沙洋县| 佛坪县| 鹤庆县| 长阳| 东港市| 鄂托克前旗| 兴安盟| 濮阳县| 新巴尔虎右旗| 湖南省| 玛多县| 乐陵市| 满洲里市| 明光市| 上虞市| 沙河市| 玉田县| 宁南县| 沂源县| 长沙市|