一次數據庫壓力測試的故事

前言

最近配合某客戶作了一個關於XX系統的壓力測試,其實通過和客戶的溝通得知,客戶此係統上線後壓力並不大,但因爲應用方前期的表現不是特別盡如人意,對此不太信任,因此要求本次壓力測試着重觀察。數據庫

參與方服務器

我、客戶、應用方(我和客戶簡稱甲方,應用方簡稱乙方)併發

環境配置工具

數據庫:RAC一體機集羣(爲方便統計,應用統一連接一個節點)性能

壓測工具:jmeter測試

壓測場景優化

大概10個大場景,每一個場景有100、200、300 3個級別的併發小場景,每一個小場景壓測10分鐘spa

壓測數據量blog

壓測數據爲應用方編造,數據庫大小2G,其中涉及的關鍵業務表數據量大概有40萬,10萬,3萬不等的數據內存

 壓力測試

 此前也作過不少次壓力測試,對於數據庫方面來講,主要是蒐集服務器當時的CPU,內存使用,以及關注AWR報告SQL執行部分是否有異常,便於正式上線後,系統資源的分配,從壓測數據量來看,2G數據能夠說是很小的數據量,另外併發最大300,對於2G數據來講,也不算大,本覺得壓力測試能夠順利進行,那也只是理想很豐滿。。。。

插曲一

在測試其中一個場景A 300併發,jmeter壓測工具開始報錯(具體報的什麼錯,暫不追究),乙方給的恢復是數據量太大,達不到300,繼續下一個場景 B,100併發,在進行完這個100併發的場景後,就有了以下對話

甲方:xxx表數據 上一個場景A 300併發時,仍是10萬 ,這個場景B 100併發的場景跑完變成3萬條了

乙方(壓測人員):@經理 這個我不是很懂,你幫忙看下

乙方(經理):這個我找人處理的,十萬條數據數據量比較大,實際沒有那麼大的

甲方:這在測試呢 大家數據清理了?

甲方:今天把大家作測試數據的表和對應的數據量都寫到方案裏肯定下來

甲方:不要測試過程當中刪數據

甲方:不能爲了達到併發標準在哪刪數據,達不到就是達不到,後期能夠優化的

甲方:肯定下來 測試過程當中不要作小動做

乙方(壓測人員):刪數據這個我就不知道了,通常壓力測試的時候都不會讓他們作什麼操做的

從上面的對話,大概對狀況有一個瞭解,乙方多是認爲,數據量大因此場景A 300併發報錯,在沒有和甲方溝通的狀況下,私下清理了主業務表數據量,不巧被甲方發現,甲方大爲不滿。其實壓力測試就是爲了確認系統的運行壓力,若是都和乙方那樣,私下清理數據,也就失去了壓力測試的實際意義,在此,給各位奮戰的DBA 和 應用人員一個建議,實事求是,實時溝通。

插曲二

因爲壓力測試,每一個大場景都有3個不一樣併發級別的小場景,可是在分析AWR報告時發現,其中SQL執行次數部分並無明顯的變化,100併發SQL執行次數30000,200併發SQL執行次數30000多,根據以往的壓測經驗來看,這確定是有問題的,同時在系統CPU使用來看,也證實了這一點,兩個不一樣級別的並CPU使用並沒有明顯差別,而後甲方乙方開始。。

甲方:100和200在數據庫後臺執行的SQL次數沒有太大差異

乙方(壓測人員):10分鐘100個併發,這麼屢次;10分鐘200個併發,應該不會變成2倍吧

乙方(壓測人員):這個是總次數吧?

甲方:是

乙方(壓測人員):那我以爲這個沒問題吧

乙方(壓測人員):你說的這個暫時記錄着,回頭他們看下

。。。。。

乙方(壓測人員):你說的情形,我諮詢過了, 可能會涉及到修改對應的一個服務裏面的參數

乙方(壓測人員):因此今天先100的跑了吧,後面

看到這裏,基本明白了,前面幾個併發測試等因而白測試了,這也告訴咱們,作事仍是細緻點好,同時要說服乙方,就要拿出證據,省得雙方扯皮,怪不得客戶提早都說,此次壓力測試要着重點看。假如只是爲了應付工做,簡單的蒐集點數據,而後過後再分析,那反工時必然的,吃一塹長一智。

插曲三

壓力測試終於到了最後3個場景,對於前幾個CPU壓力錶現還算正常,起碼是有壓力的,但最後3個場景的CPU壓力幾乎沒有,難道是一體機的性能太好?那也不該該,再說這個場景是關於客戶分析,市場分析的場景,從字面意思看,應該會訪問不少數據表纔對,此次又實實在在的分析各個運行的SQL,以及具體涉及的業務表。

甲方:上個場景 客戶分析中 XXXX表是什麼表

乙方(壓測人員):我問下去

甲方:那個客戶分析的場景 數據庫服務器幾乎沒壓力  後臺顯示 訪問比較多的是這張表

乙方(經理):剛剛那個是地區省份的篩選

甲方:哦 客戶分析 後臺的數據來源 只有這一個主表麼?

---就在這時,乙方測試人員發了一個哭哭的表情,我就意識到問題有出現了

乙方(壓測人員):你一問,我看了一下

乙方(壓測人員):xx分析的腳本,以前調的時候有部分禁掉了

乙方(壓測人員):從新跑下xx分析吧,我停了

甲方:。。。。。。。。。。。。。。。

看來甲方最開始的不信任仍是有依據的,這個壓力測試在此以前,乙方已經準備了一週左右,但仍是出現各類情況。。。

總結

針對這次測試,除了插曲一乙方作的不地道以外,另外2個都是乙方前期準備的問題,在此,咱們不對乙方作過於‘積極’的評價。

對於我來講,有如下感悟:

一、不論是對本身或者客戶,作事要以主人公的心態,抱着應付了事,害人害己呀,好比案例中XX方

二、和其餘環節的人員溝通不肯定性問題時,須要拿出確鑿證據,省得雙方踢皮球

三、良好的溝通是客戶服務的第一環節,或許你能力暫時不夠,但不能糊弄客戶,誰都不是傻子

相關文章
相關標籤/搜索