當DiscuzNT遇上了Loadrunner(上)

    DiscuzNT3正式版發佈已經有一段時間了,最近半年多來很少再寫關於這個產品的技術文章了,一是時間,二是精力有限。不過在正式版發表之後,倒是有了些功夫,同時我們的一個商業客戶在從2.6版本升級到3.0正式版之後,出了一個小插曲,導致不得不退回到2.6版本。因爲這個客戶的論壇訪問量和發帖量比較大,平時在線人數5000,日發帖量在2-3萬左右。所以出了一些性能上的問題,在大併發情況下,服務器響應超時,且在峯值時越發不穩定。之前我在公司內部用了tinyget做了一些簡單的壓力測試,發現了一些問題,但原因尚不明顯,所以在公司會議上就有人提出使用loadruner來做一下壓力測試,看看3.0產品的性能倒底如何,是什麼造成用戶的服務器不穩定。所以就有了今天的這篇文章。

      當然,我寫這篇文章的目的主要是做一份備忘錄。原因很簡單,就是三年多以前曾用過一段時間的LR,本以爲這次測試會輕車熟路,可不曾想,連最簡單的併發用戶數都忘在哪裏設置了,所以鑑於此,纔有感做記錄的‘必要性’。所以本文的內容兼筆記和實戰於一身,呵呵。好了,費話少說,let’s go!

     首先,我要在本地搭建一個測試環境,而這個測試環境是一個小型的內部網絡,包括一臺1u的服務器,一臺TPLINK交換機和一臺安裝了lr的機器。而爲什麼要這樣做,原因很簡單,如果使用公司局域網,首先就要受到網絡內部流量的影響以及限流軟件的限制,如果再有一兩個同事開個什麼‘雷’呀,‘驢’呀,‘米’呀的下載器,那就更熱鬧了,很難最終把壓力和網絡流量模擬上來,所以我就直接通過網管找來了這三臺設備,給成了一個100m的內部網絡,這樣能夠從根本上確保1000 的併發用戶數(v_user)。

     這裏要聲明的是,本身用的是loadruner8.0,且是破解版。呵呵,你沒看錯,因爲我很窮,沒這份財力去購買正版的lisence,所以這裏就只能‘那個’了。同時,爲了確保安裝的lr正常運行,我直接將其安裝在了window2003+ie6的平臺上,這是lr比較標準的系統運行環境。在完成安裝和lisence註冊後,下面就來看一下其使用流程。

     第一步:錄製腳本

     下面就是一個錄製腳本的過程:

     因爲測試的是WEB應用,所以在創建項目窗口中選擇http協議。

     loadrunner_rec_1

     loadrunner_rec_2

       然後緊接着在下面窗口中填入要測試程序的http鏈接地址,然後點擊確定。這時lr就會啓動ie6並按之前我們設置的網址訪問該應用。

      loadrunner_rec_3

      這裏我們可以看到下面的events在不斷的累加,這些events我們可以看成是一個個http請求處理操作(比如下載js,css,圖片等)。

loadrunner_rec_4

 

      接着我們點擊該錄製工具的“new action”圖標來新建一個action,這樣做的目的就是將我們測試流程中的每一個環節分別定義,以便在後續分析壓力測試結果時能夠一目瞭然,呵呵。

      我們在新的action中,定義爲“showforum”(即顯示版塊信息),然後我們就去點擊一個論壇版塊鏈接,如下:

     loadrunner_rec_5

 

      注:我習慣於將action的名稱定義爲鏈接頁面名稱,這樣比較直觀。

loadrunner_rec_6 

 

      這裏我們看到events累加數又在變化。這時我們再創建一個action,以記錄發主題的操作,這裏因爲我們的產品在3.0中支持了彈窗功能,所以我們就將該action記錄爲"pop_posttopic”, 然後我們點擊一個當前showforum頁面的“新帖”按鈕,這樣發帖頁面就被彈出來了,如下圖:

 loadrunner_rec_7

    

      這裏大家看到了吧,即使是ajax彈窗,lr也會‘忠實’的加以記錄。

      這裏我們簡單的輸入一些信息,然後在創建一個新的action叫‘posttopic’,也就是提交主題,接着我們點擊發布按鈕,這樣就將提交主題流程也記錄下來了。

      大家會發現當發佈成功後,頁面會跳轉到showtopic。換句話說'posttopic’這個action中包含提交跳轉兩個操作,不過沒關係,等測試報告出來時,我們可以看到這一個action中的兩個操作分別的執行時間,頁面體積等信息。

      按一般人瀏覽論壇的習慣,就是其會在不同的版塊和話題之間‘翻來覆去’的‘折騰’,所以我們就再創建一action,叫'showforum_2’,以代表其跳轉版塊的行爲,然後點擊導航鏈接上的按鈕,如下圖:

 loadrunner_rec_8

 

      當頁面跳到showforum頁面下時,我們再創建一個action,叫showtopic_2,以代表用戶又打開了一個新主題。然後我們就隨便點一個主題帖。這樣就基本上完成了一個主要的操作流程。最後我們在錄製工具的下拉框中找到“vuser_end”這個action,以此作爲最後一個action的操作,平時我把‘註銷(退出登陸)’操作做爲這個action的內容,而今天我以‘跳轉回首頁’作爲了“vuser_end”這個action的內容了。

    loadrunner_rec_9

  

     這樣,錄製工具就完成了,我們點擊錄製工具條上的那個方塊圖標,來結束錄製,如下圖:

   loadrunner_rec_10

 

    下面我們來看一下lr給我們生成的相關腳本。如下圖:

   loadrunner_rec_11

 

      直接從腳本上來看,基本上就是每個action所訪問頁面內容中的鏈接,腳本及相關文件的鏈接信息。lr就是藉助這些信息來依次執行相關操作的。

 

      下面我們可以接着設置一下我們剛纔錄製腳本時所做的‘一系列操作’的‘重複次數’,我們可以通過點擊lr上的工具欄圖標來進行設置,如下圖:

 loadrunner_rec_12

  

      在彈出窗口中,我們可以設置重複次數,圖中的設置是重複這些操作5次

 

      當然我們還可以設置每個action執行完之後的間隔時間,這一點我們可以理解成爲:當我們看一個帖子時,不會一打開頁面就跳轉或關閉,肯定會看完相應內容之後才執行‘後續操作’。不過爲了最大限度的給服務器和數據庫‘製造壓力’,這裏用的是默認設置,即一個action操作完後馬上執行下一個action,如下圖:

loadrunner_rec_13

 

    我們可以用lr上的操作圖標,來看一下我們腳本的執行情況(注:按F10爲單步執行)

loadrunner_rec_14

 

     注:檢查腳本的執行情況主要是爲了後續工作考慮,因爲有些腳本錄製的內容可能不正確或不是我們想要的,我們可以酌情修改

 

      好了,今天的內容就先到這裏了,在後續的文章中,將會介紹如果設置併發用戶,以及生成保存測試結果,以及如果分析測試報告,因爲一切工作都是爲了生成一份儘可能準確客觀的‘報告’,從而能快速幫助我們找出‘系統瓶頸’,從而重點加以優化。


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章