qileilove

          blog已經(jīng)轉(zhuǎn)移至github,大家請訪問 http://qaseven.github.io/

          怎樣進行數(shù)據(jù)庫性能測試

           前言:

            究竟怎樣進行數(shù)據(jù)庫性能測試,數(shù)據(jù)庫性能測試需要做些什么?大多數(shù)產(chǎn)品線的RD和QA也比較迷茫,經(jīng)常過來咨詢。

            一般說來,做數(shù)據(jù)庫性能測試需要如下幾個步驟:

            1、明確測試目的

            2、設(shè)計測試模型 (即壓力模型)

            3、準(zhǔn)備測試集群環(huán)境

            4、準(zhǔn)備壓力測試工具或者編寫壓力測試腳本

            5、明確性能指標(biāo)并加監(jiān)控

            6、根據(jù)2設(shè)計的測試模型準(zhǔn)備測試數(shù)據(jù)

            7、測試執(zhí)行

            8、測試分析

            本文依據(jù)以上步驟,模擬測試需求- 多實例多盤數(shù)據(jù)庫的性能對比測試,制定測試方案公布給大家,方便大家了解數(shù)據(jù)庫性能測試。

            多實例多盤數(shù)據(jù)庫性能測試方案

            一、測試目的

            1、對比數(shù)據(jù)庫單實例、多實例的在不同硬件設(shè)備上的性能情況。

            2、對比單機單實例和多實例的性能情況

            3、驗證網(wǎng)絡(luò)帶寬是否成為flash產(chǎn)品發(fā)揮性能優(yōu)勢的瓶頸。

            4、驗證flash產(chǎn)品是否隨時間存在性能衰減的可能。

            二、測試方法概述

            測試基準(zhǔn)工具:smart-slap(mysqlslap),Jmeter模擬若干客戶端、若干用戶執(zhí)行指定的SQL語句,訪問數(shù)據(jù)庫。同時,通過監(jiān)控工具監(jiān)控系統(tǒng)負(fù)載、mysql數(shù)據(jù)庫的服務(wù),全面了解數(shù)據(jù)庫系統(tǒng)以及硬件的負(fù)載情況。

            測試模型
            測試監(jiān)控及結(jié)果統(tǒng)計
            監(jiān)控工具統(tǒng)計如下信息,分析性能瓶頸。

            系統(tǒng)負(fù)載:

            CPU:CUP_IDLE、CPU_WA、SERVER_LOADAVG
            內(nèi)存:MEM_URATE、MEM_USED
            網(wǎng)卡:NIC_TOTAL_IN、NIC_TOTAL_OUT、

            數(shù)據(jù)庫負(fù)載:

            QPS:COM_READS、COM_WEITES
            主從延遲:SECOND_BEHIND_MASTER
            慢查詢:SLOW_QUERIES_PT
            連接數(shù):THREADS_CONNECTED、THREADS_RUNNING

            STL-tools 監(jiān)控集群負(fù)載

            附:性能指標(biāo):

            系統(tǒng)負(fù)載:

            CPU:CUP_IDLE 、CPU_WA、SERVER_LOADAVG
            內(nèi)存:MEM_URATE、MEM_USED
            網(wǎng)卡:NIC_TOTAL_IN、NIC_TOTAL_OUT、

            數(shù)據(jù)庫負(fù)載:

            QPS:COM_READS、COM_WEITES
            主從延遲:SECOND_BEHIND_MASTER
            慢查詢:SLOW_QUERIES_PT
            連接數(shù):THREADS_CONNECTED、THREADS_RUNNING

            三、測試準(zhǔn)備

            測試環(huán)境準(zhǔn)備

            假設(shè)將四類IO存儲設(shè)備,進行單、多實例的性能測試對比。則可以部署測試集群如下:

            測試集群具體搭建:

            2臺機器 ——–4主4從
            根據(jù)測試更換硬件:
            RAID+SAS:
            RAID+SSD:
            Flash:
            Fusion:

            監(jiān)控:在每臺機器上部署數(shù)據(jù)庫監(jiān)控腳本monitor,最好有統(tǒng)一平臺上調(diào)度、管理、分析monitor采集到的數(shù)據(jù)。

            測試工具準(zhǔn)備:

            Smart-slap:

            特點:全量發(fā)壓力,可得到最大QPS,對比不同集群的最大QPS。分析不同集群的最大QPS.

            Jmeter:

            特點:控制實時壓力,分析各集群在指定壓力下的性能情況。

            測試思路:

            先采用slap進行對不同集群組合進行同樣的sql壓力。(壓力時間)取得不同集群的最大QPS,進行對比。

            取最大QPS的一定比率(如1/8倍,1/4倍,1/2倍,1倍)作為每秒發(fā)送的請求壓力進行測試。比較各個集群的負(fù)載、數(shù)據(jù)庫性能情況。

            網(wǎng)絡(luò)瓶頸測試:

            同網(wǎng)段3臺壓力機器 往一個集群壓足夠多的IO壓力。分析各個硬件的IO。磁盤、CPU比網(wǎng)卡提前到達(dá)壓力閥值說明網(wǎng)卡不是瓶頸。若網(wǎng)卡IO先達(dá)到極限則說明網(wǎng)卡存在瓶頸。

            硬件性能衰減測試

            同樣壓力測試24小時,比較最初1小時,和最后1小時的 TPS.以及各項性能指標(biāo)。

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

            數(shù)據(jù)庫:flashT

            36張表:

            Test1- test36:

            表結(jié)構(gòu):

            CREATE TABLE `test1` (
            `doc_id` int(10) unsigned NOT NULL default ’0′,
            `main_status` tinyint(3) unsigned NOT NULL default ’0′,
            `sub_status` tinyint(3) unsigned NOT NULL default ’0′,
            `create_time` int(10) unsigned NOT NULL default ’0′,
            cid1` smallint(5) unsigned NOT NULL default ’0′,
            ……………
            PRIMARY KEY (`doc_id`)
            );

            數(shù)據(jù)量:

            每個表達(dá)到5000W 行(大概30G)

            36個表

            說明:具體的測試庫表結(jié)構(gòu)、類型

            每張表的測試數(shù)據(jù)量等都需要根據(jù)具體測試目的和測試場景進行設(shè)計。

            四、測試步驟

            測試一: 不同集群配置,不同實例的性能對比測試

            一: 數(shù)據(jù)構(gòu)造,同時驗證各硬件集群基本讀、寫性能。

            1)4個實例全部開啟insert 5000W;初步對比寫性能。

            用36個slap并發(fā)實例分別往36張表insert,往每個表插入5000W 行數(shù)據(jù)。

            2)4個實例全部開啟,每張表20個select并發(fā)select。初步對比讀性能。

            用36個slap并發(fā)實例子每個實例20個并發(fā)select請求分別從36張表中取數(shù)據(jù)。

            二:對比不同集群執(zhí)行最常用SQL命令的性能情況

            制定數(shù)據(jù)庫系統(tǒng)最常用的SQL語句,數(shù)據(jù)庫執(zhí)行這些SQL語句的性能。用slap并發(fā)用戶數(shù)從10,50,100,200。

            三:對比不同集群處理最耗時SQL命令的性能情況

            制定數(shù)據(jù)庫系統(tǒng)最耗時的SQL語句,數(shù)據(jù)庫執(zhí)行這些SQL語句的性能。用slap并發(fā)用戶數(shù)從10,50,100,200。

            四:模擬事務(wù)處理,對比各集群性能情況。

            模擬事物,,用slap并發(fā)用戶數(shù)10,50,100,200,500,800,1000分析不同集群分別在多少并發(fā)用戶數(shù)下,TPS值最大。

            五:分析各集群在線事物處理能力。

            模擬事務(wù)處理,根據(jù)步驟四得到的最大TPS,設(shè)置TPS的一定比率作為每秒事務(wù)數(shù),用jemeter測試,并發(fā),10,50,100,200,500,800,1000.分析各個并發(fā)各種集群下的響應(yīng)時間分布和其他各項性能指標(biāo)。分析TPS情況最好的并發(fā)數(shù)。

            測試二:網(wǎng)卡瓶頸測試

            步驟一:分析測試一中的各項測試結(jié)果的CPU、磁盤、網(wǎng)卡等負(fù)載情況。

            如果其他幾項比網(wǎng)卡提前到達(dá)瓶頸。則說明網(wǎng)卡不會成為瓶頸。相反進入步驟二。此外,如果測試一中的各項測試磁盤,網(wǎng)卡,CPU等均未達(dá)到瓶頸。則將測試一中的步驟四,增大并發(fā)壓力,直到出現(xiàn)負(fù)載瓶頸。

            步驟二:調(diào)整測試。

            測試三:硬件是否衰減情況。

            步驟:用jmeter 持續(xù)測試24小時。

            用測試一中的步驟五得到的最好TPS的并發(fā)數(shù)作為此次測試的并發(fā)數(shù),用Jmeter并發(fā)測試24小時,分析第一個小時和最后一個小時的TPS,和響應(yīng)時間分布。

            (注意每一次測試命令中,涉及查詢條件的值隨機分布)

            五、總結(jié):

            關(guān)于數(shù)據(jù)庫性能測試,只要掌握了壓力測試工具。最關(guān)鍵的還是設(shè)計出符合業(yè)務(wù)的測試模型,以及測試完成后的測試分析。通過實踐抽象出測試模型,進行自動化,則測試過程可以事半功倍。

          posted on 2013-03-19 10:22 順其自然EVO 閱讀(1161) 評論(0)  編輯  收藏 所屬分類: 數(shù)據(jù)庫性能測試

          <2013年3月>
          242526272812
          3456789
          10111213141516
          17181920212223
          24252627282930
          31123456

          導(dǎo)航

          統(tǒng)計

          常用鏈接

          留言簿(55)

          隨筆分類

          隨筆檔案

          文章分類

          文章檔案

          搜索

          最新評論

          閱讀排行榜

          評論排行榜

          主站蜘蛛池模板: 博湖县| 库尔勒市| 康保县| 进贤县| 镇宁| 英山县| 柏乡县| 苏州市| 崇义县| 枣庄市| 南靖县| 申扎县| 汽车| 历史| 房山区| 吉木乃县| 任丘市| 曲松县| 石泉县| 沾化县| 靖西县| 濉溪县| 盖州市| 横山县| 太仓市| 博乐市| 德清县| 鄯善县| 上犹县| 金阳县| 天台县| 兴仁县| 塔河县| 巨野县| 龙里县| 清原| 铁力市| 河源市| 都匀市| 华宁县| 岐山县|