HP LoadRunner 12.02 Tutorial T7177-88037教程獨家中文版
Tylan獨家嘔血翻譯
轉載請注明出自“天外歸雲”的博客園
Welcome to the LoadRunner Tutorial
LoadRunner所包含的組件
如下所示:
Vugen:Virtual User Generator,虛擬用戶發生器的簡稱,用來錄制用戶的業務流程,創建自動化性能測試腳本,亦稱之為Vuser腳本。
Controller:控制器,用於組織、驅動、管理並監控負載測試。
Analysis:分析器,幫助你查看,剖析並比較負載測的結果報告。
Load Generator:負載發生器,用來攢動與運行虛擬用戶以對目標系統產生負載的計算機。
LoadRunner術語
場景:在場景中將根據性能需求來定義測試過程中所發生的事件。
虛擬用戶:虛擬用戶會在系統中模仿真實用戶的行為。一個場景可以包含數以千計的虛擬用戶。
虛擬用戶腳本:錄制了你在程序中所操作的業務流程。
協議:協議就是客戶端和服務器之間的交流方式。
事務:事務用以衡量你的系統性能。一個事務代表了一個或多個終端用戶的業務流程。一個事務讓你衡量業務流程所花費的時間成為可能。
腳本足跡:由負載發生器所需的大量不同資源所定義,以執行Vuser腳本為目的。典型的資源包括內存,CPU能源,硬盤空間。
LoadRunner負載測試流程:
- 計划負載測試:計划你的負載測試都需要做哪些准備,比如:並發的用戶數,主要的業務流程,和需要的相應次數等。
- 創建Vuser腳本:用VuGen把終端用戶的操作活動錄制成腳本。
- 設計場景:用Controller創建一個負載測試的環境。
- 運行場景:用Controller驅動,管理並監控這個負載測試。
- 分析結果:用LoadRunner Analysis生成圖表與報表,對系統的性能進行評估。
開始HP Web Tours(惠普在線旅游)
為了理解LoadRunner是如何做為負載測試的解決方案,這個教程將用性能需求作為一個樣本應用。這個樣本應用——HP Web Tours(惠普在線旅游),是一個web-based(基於網絡的)旅游代理系統。HP Web Tours的用戶連接到一個web服務器,用於搜索與預訂航班,檢查航班行程。
LoadRunner支持超過50種應用,這個教程僅僅用來講述怎樣來對一個web-based類型的應用進行負載測試。如果你要對其他類型的應用進行負載測試,請聯系惠普以求幫助。
在教程的這一部分中,你將會學到如何開始並登錄HP Web Tours。
-
打開樣本的web server:選擇Start > All Programs > HP Software > HP LoadRunner > Samples > Web >Start HP Web Tours Server,在基於圖標的桌面中,比如Win8,查找"Start HP",在Search結果中選擇並打開"Start HP Web Tours Server"
在你訪問這個應用的同時你一定要讓 "Start HP Web Tours Server"的窗口始終開着。
- 打開HP Web Tours:選擇Start > All Programs > HP Software > HP LoadRunner > Samples > Web > HP Web Tours Application。Win8同上,搜索HP Web,選擇HP Web Tours Application。(確保你的LoadRunner安在你的計算機的默認文件夾中,否則HP Web Tours Application不會被打開。)
-
登陸HP Web Tours:
- 用戶名和密碼分別輸入jojo和bean
- 點擊login。
-
預訂航班:
- 在左側導航欄中點擊Flights,Find Flight頁面被打開;
- Arrival City選擇Los Angeles;
- 點擊Continue;
- 在跳轉頁面保持默認設置,點擊Continue;
- 在Payment Details頁面,點擊Continue,Invoice頁面顯示了你的機票預訂信息;
- 在左側導航欄中點擊Sign Off。
定義應用的性能需求
現在你已經熟悉了HP Web Tours,設想你是性能工程師,你要對HP Web Tours的性能負責並讓其符合HP Web Tours的商業需求。你的產品經理已經給出了四點產品的發布標准:
- HP Web Tours必須能撐得住10個並發的旅游客戶端;
- HP Web Tours必須能同時運行十個航班預訂,並且響應時間不得超過90秒;
- HP Web Tours必須能夠撐住10個旅游客戶端同時運行itinerary checks,並且響應時間不得超過120s;
這個教程將教你如何建立一個滿足所有這些需求的負載測試,以便於在產品發布前你可以給出諸如產品性能通過或失敗的數據。
第一課:建立一個Vuser腳本
要對你的系統產生負載,首先你要創建一個可以運行的能夠模仿真實用戶操作的Vuser腳本。這里,你需要用Vugen來完成這一需求。
介紹一下Vugen——Virtual User Generator(虛擬用戶發生器)
在一個性能測試環境中,LoadRunner用虛擬用戶代替了真實用戶,虛擬用戶也叫Vusers,虛擬用戶通過可預見的,重復性的模擬真實用戶操作來對系統產生負載。
Vugen幫你創建虛擬用戶腳本,它以錄制與回放的原則去工作。當你在你的應用中完成一遍業務流程的同時,Vugen會記錄你的操作並將其按步驟翻譯成虛擬用戶腳本。虛擬用戶腳本是你負載測試的基礎構成。
創建一個空的虛擬用戶(Vuser)腳本
去開發一個虛擬用戶腳本,你首先要打開Vugen並創建一個空腳本。此后你才可以通過錄制事件或加入人為改善的方式來改善這個空腳本。
本節你將創建一個基於Web-based HTTP/HTML協議的虛擬用戶腳本。
定義:協議是服務器與客戶端之間的交流方式。
接下來我們創建一個空的虛擬用戶腳本:
-
點擊你桌面上的Virtual User Generator圖標打開Vugen。
-
點擊File>New Script and Solution,在彈出頁中選擇Web-based HTTP/HTML協議。(左側的Vugen Category一定確保是Single Protocol)
錄制一個虛擬用戶腳本
這部分內容將幫你完成之前預訂航班和檢查行程的錄制。
首先,你要點擊Record>Recording Options:
確保Track processes created as COM local servers這一項是沒有勾選的,然后點擊OK。
接下來我們錄制虛擬用戶腳本:
-
開始在HP Web Tours網站上的錄制;
-
點擊錄制按鈕:
- url處填寫:http://localhost:1080/WebTours/,其他保持默認,然后點擊Start Recording:
- 注意:確保你的Start HP Web Tours Server是打開的,否則可能打不開HP Web Tours頁面。之后你會看到錄制框出來了:
-
- 在彈出的HP Web Tours頁面輸入用戶名和密碼:jojo和bean,然后點擊login;
- Arrival City選擇Los Angeles,Seating Preference選擇Aisle其他保持默認,點擊Continue;
- 點擊Continue;
- Credit Card欄輸入12345678,Exp Date欄填06/14,點擊Continue;
- 點擊左側Itinerary;
- 點擊左側Sign Off;
- 點擊Stop Recording按鈕:
,彈出的頁面點擊Close按鈕;
-
保存腳本:
- File>Save Script As
- 名字取為basic_tutorial
查看虛擬用戶腳本
左側的Solution Explorer給出了Vuser腳本的各個組成部分與相關文件。
Step Navigator以小圖標的形式列出了虛擬用戶各個步驟的操作,你在錄制腳本的過程中所做的每一個操作,Vugen都會在Step Navigator中生成相應的步驟。
每個步驟名字右側的小圖標代表有截圖:
用戶的操作是以API函數的形式顯示在右邊的編輯器中的,你可以用C語言或者LoadRunner API函數或是一些流程控制語句在其中直接進行編寫。
第二課:回放你的腳本
上一節,你錄制了腳本。但是在你把你的腳本放到場景中執行前,你需要回放你的腳本以檢查你錄制的Vuser腳本是否能正常工作。
在你回放腳本之前,你必須配置腳本的runtime settings,它定義了虛擬用戶的行為。
怎樣設置虛擬用戶的runtime行為?
LoadRunner的運行時設置(runtime settings)讓你能夠模擬不同種類的用戶活動和行為。例如:你可以模擬一個對服務器的輸出立刻做出響應的用戶,或者你也可以模擬一個每一步都要思考才能做出響應的用戶。你可以配置運行時設置(runtime settings)來具化虛擬用戶需要重復多少次腳本中的操作。
本節介紹通用的可以應用與所有的虛擬用戶協議的runtime settings該如何配置,關於特殊的協議在第四節課中將會講到。General runtime settings包括:
Run Logic(運行邏輯):Vuser重復不同部分Vuser腳本的次數。
Pacing(節奏):每兩次重復之間的等待時間。
Think Time(思考時間):腳本之中步驟之間Vuser所需要停頓的時間。
Log:設置在你回放腳本過程中所需要收集的信息的level(等級)。
本節課介紹用Vugen修改runtime settings,之后的課程將介紹如何用Controller修改runtime settings。
修改runtime settings:
- 打開你上節課保存的Vuser腳本;
-
打開runtime settings對話框,點擊Replay>Runtime Settings(按F4)出現編輯界面:
-
設置Run Logic配置:
在左側欄中選擇Run Logic,設置Number of iterations(重復次數)為2,這個是用來設置腳本中Action部分的重復次數:
-
設置Pacing settings:
在這里你可以設置每兩次重復之間的等待時間,你可以設置一個隨機值,這將以一個隨機的間隔時間更加精確的模擬真實用戶在重復操作之間等待所用的時間,比如你不會看到真實用戶在每兩次重復操作之間總是等待六十秒。
選擇第三個圓按鈕,設置隨機時間間隔為60到90秒:
-
設置Log settings:
這里設置在運行時要記錄那些log信息。在你開發腳本的時候你可能會為了debug方便而想要得到一些特別的log信息,但是一旦你調試通過了,你可能以后只需要得到error的log信息,或根本不需要log信息了。
選擇Extended log並勾選parameter substitution。這個選項和以后課程中將要討論的點相關。
-
設置Think Time:
保持默認設置,忽略Think Time時間。你可以在Controller中設置。
我怎么運行我的Vuser腳本?
在錄制好腳本並設置好runtime settings后,你就做好了運行腳本所需要的准備。Vugen在你運行腳本的過程中會給予你一些的指示器。
- 左下角會出現"Running"字樣。
- 編輯器中會出現小黃箭頭,它會指向正在被回放的腳本。
- 下面output中會顯示回放過程中的消息。
介紹完界面上的東西,下面我們來運行錄制好的腳本:
- 在Vugen中打開Vuser腳本;
-
點擊Replay>Run或者直接點擊工具欄上的
按鈕。
在回放結束后會彈出個東東建議你檢查相關的,點擊NO。
我在哪里可以看到回放信息?
當Vuser腳本停止運行,你可以看到回放的一個總結,回放的總結會顯示在Replay Summary 標簽下。
回放總結標簽下列出了關於腳本運行的基本信息,比如回放時間間隔,回放的開始與截止時間。下面的兩個link分別是腳本運行的詳細結果和回放時所收集的log。
回放的log里記錄了回訪時所發生的事件,在Vugen的output欄里顯示。
在教材的這一部分,你將打開log,在log中找到指定的事件和提示。
查看回放log:
- 在腳本回放完成后,點擊View>Output或在Vugen工具欄中點擊Output按鈕
。或者你也可以在Replay Summary標簽下點擊The Replay Log的鏈接;
-
確認你的Output欄中Replay已經被選擇:
- 在Vugen菜單中點擊Search>Quick Find去打開Search對話框;
- 在Scope中選擇Current Script;
- 點擊展開Include in search,之后勾選Logs;
-
通過Search對話框在回放log中定位以下信息:
- "Virtual User Script Started"——腳本運行的開始;
- "Vuser Terminated"——腳本運行的結束;
- "Iteration"——每一次重復的開始和結尾以及重復的次數。(橘色字體的文本)
注意:Output欄中綠色的是成功信息,紅色的是失敗信息。Output欄中也會指出出現的的error在腳本中對應的行號。
雙擊Output欄中的行,將會定位到相應的腳本行。
我怎么知道我的腳本回放是否成功?
在你回放了你所錄制的腳本后,你需要查看回放結果去判斷腳本是否回放成功。如果有哪有東西失敗了,你想知道什么時候為什么失敗了。
這一部分你將學會檢查和分析腳本運行結果。Vugen在Test Results窗口中總結了回放結果。
你打開Test Results窗口后會發現它有兩個欄,左側的樹欄和右側的結果總結欄。
- 樹欄包括結果樹,每一次重復在樹中都被標注了數字。
- 結果總結欄包含了腳本回放的詳細信息,當然也包括了屏幕錄制器(Screen Recorder)的移動,如果有的話。頂部的表告訴你哪些次重復(Iteration)失敗了,哪些次成功了。和原始錄制的過程相比較,如果虛擬用戶順利完成了整個過程,那么這次測試將被認為是通過的。底部的表告訴你事務(Transactions)或檢查點(CheckPoints)是否成功或失敗。在教程的后續章節你將學到如何添加這些特色(指事務或檢查點)。
可以通過下面兩種方法來查看回放結果:
- 點擊Replay Summary標簽;
- 點擊Reply>Test Results,Test Results窗口打開了並顯示了Results Summary。
下一部分,你將鑽入回放結果中仔細研究,從而判斷腳本在回放過程中是否到達了預期的web頁面。
我應該怎樣查找或過濾回放結果?
如果你的回放結果表示有什么東西失敗了,你可以進一步定位失敗的原因。
在Test Results窗口中左側的樹欄,你可以展開你的測試樹,分別查看每一次重復中每一步的結果。右側的總結欄中會顯示該次重復過程中對應的回放截圖。
-
展開樹上的一個重復節點:
- 在結果樹上展開basic_tutorial Iteration 1節點;
- 展開Action Summary節點,展開的列表將按順序顯示該次循環中所執行的操作步驟;
- 查看結果截圖:
點擊Submit Form:reservations.pl,右側總結欄將顯示該步操作時所對應的截圖:
-
查看步驟總結:
總結欄顯示關於步驟的總結性信息:如對象或步驟名,詳細的關於頁面是否成功加載,結果是否通過,每一步的發生時間等。
-
查找結果狀態:
你可以在回放結果中搜索"Passed"或"Failed"。
這是非常有幫助的,因為如果你的回放結果總結中告訴你失敗了,它可以幫你找到哪里失敗了。
-
想要查詢回放結果,點擊Tools>Find或者點擊工具欄中的Find按鈕
,查詢對話框就會被打開;
- 勾選"Passed",其他的不勾選,點擊"Find Next",測試樹欄中將把第一個通過的(Passed)步驟高亮顯示出來,如果沒有通過的則不高亮顯示。
-
-
過濾結果:
你可以過濾測試樹欄來顯示一個指定的循環或狀態。比如,你可以過濾它只顯示"Failed"狀態的。
-
點擊View>Filters或點擊工具欄中的Filters按鈕
,Filters對話框就會被打開;
- Status選擇Fail選項;
-
Content選擇All選項,點擊OK。
可以看到左面的樹欄空了,這是因為過程中不存在失敗。
-
-
關閉Test Results窗口:
點擊File>Exit。
第三課:解決回放過程中所遇到的一般問題
當你錄制好一個腳本后,你通過在VuGen中運行來驗證該腳本是否通過。有時回放會失敗,即便同樣的操作在錄制時是成功的。
有很多應用是動態生成值的,你每次打開這個應用的時候都不一樣。比如,有些服務器為每一個新的會話都賦予一個獨一無二的會話ID。當你試着回放一個錄制好的會話時,會話會生成一個與錄制時不同的新的會話ID。當你回放特定的腳本時,像會話ID這樣的動態值將會給你帶來麻煩。比如當你回放Web-HTTP/HTML類型的腳本時動態的會話ID就會帶來麻煩,但是當回放Web-TruClient類型腳本時就不會。
LoadRunner利用關聯性來定位與解決這種動態值的問題。關聯性保存這種變化的值到一個參數中,就像我們這個例子中的會話ID。當我們運行腳本時,虛擬用戶將不會采用事先錄制的值,取而代之,會采服務器所賦予其的新會話ID。
這節課你講學習LoadRunner是如何解決在Web-HTTP/HTML類型Vuser腳本運行時產生的動態值問題。
為HP Web Tours的回放錯誤做准備
為了說明一個普遍存在的回放失敗,你需要在HP Web Tours應用中修改一個設置。這個設置會讓HP Web Tours服務器需要獨一無二的會話ID。
-
打開HP Web Tours:
Start > All Programs > HP Software > HP LoadRunner > Samples > Web > HP Web Tours Application. 之后HP Web Tours的Home Page頁面就被打開了。(Win8的話在界面輸入HP Web進行搜索)
-
改變服務器選項:
- 在頁面點擊"administration"鏈接,Administration頁面就被打開了;
- 選擇"Set LOGIN form's action tag to an error page.",這個設置將不允許服務器復制會話ID;
- 點擊"Update"按鈕;
- 點擊頁面底部的"Return to the Web Tours Homepage"鏈接。
我們對於獨一無二的服務器值是如何處理的?
在HP Web Tours被修改的配置中,服務器給每一個虛擬用戶一個獨一無二的值。如果你試着回放沒有修改過的在第一課中所錄制的虛擬用戶腳本,回放的結果將是失敗的。
為了克服這個問題,你需要用VuGen去實現這個關聯會話 ID的需求。你需要在VuGen中添加一步把這個獨特的會話ID添加到一個參數中。在后續的每一個會話中,VuGen都會將新的獨一無二的會話ID存入一個參數中。在虛擬用戶運行Vuser腳本中的步驟時,虛擬用戶會使用已經保存的會話ID值,而不是原先錄制好的值。
-
錄制一個新的包含動態值的腳本:
- 錄制一個新的包含和第一課中所錄制的腳本具有相同步驟的虛擬用戶腳本;
- 將腳本保存為"basic_tutorial_Cor"。
-
回放新錄制的腳本:
點擊錄制按鈕進行錄制,VuGen運行這個新的腳本,你會注意到回放log中有一些紅色字體的錯誤信息出現。
回訪結束后,一個消息對話框會彈出提醒你檢查關聯,點擊"No"。
-
檢查回放總結:
觀察回放總結欄(Replay Summary Tab),總結中會指出你的回放失敗了。
-
檢查腳本中的關聯(Scan for correlations):
選擇"Design > Design Studio"
VuGen檢查腳本和它所關聯的數據,查找可能的動態值。Design Studio下Correlation這個欄列出了三個需要關聯的動態值。這三個值中最長的那個是會話ID。
-
關聯會話ID:
-
在Correlation欄選擇會話ID那一行,並點擊Correlate。VuGen會把會話ID的狀態變化Applied,並會在腳本的頂部插入一個新的方法,這個方法將把原始的會話ID存入一個參數中。
在之后的每一個回放會話中,VuGen都將保存新的獨一無二的會話ID到參數中。當虛擬用戶運行腳本時,會以該參數取代原先錄制的值;
- 點擊"Close"關閉Design Studio。
-
-
來查看一下關聯語句的語法:
在VuGen編輯器中個,定位到VuGen加到腳本中的語句。新的語句看起來就像下面這樣:
這個語句告訴VuGen將第一次包含在正則表達式中的值(獨一無二的會話ID)存入參數中並叫CorrelationParameter這個名字。
-
重新運行腳本:
- 點擊回放按鈕,結束運行后在Output欄中查看回放log,發現沒有錯誤信息了;
- 在腳本中,右鍵點擊web_reg_save_param_regexp選擇Go to step in Replay Log,VuGen將鼠標定位在Replay Log中所對應的行處。Log表明方法web_reg_save_param_regexp方法執行成功,關聯順利。
-
重置HP Web Tours服務器以忽略獨一的會話ID:
- 打開HP Web Tours Application;
- 在Home Page頁面點擊Administration鏈接;
- 取消勾選"Set LOGIN form's action tag to an error page";
- 在頁面底部點擊"Update"。
現在你對回放中的錯誤有一定的了解了,可以去學習第四課了。
第四課:為負載測試准備一個虛擬用戶腳本
在之前的課程中,你已經確認你的腳本回放的過程精確的模擬了真實用戶的行為。下一步,就是為了負載測試准備腳本。那么,多個用戶同時並發的在系統上工作會怎樣呢?系統會不會慢到一個不可接受的程度?
在這一課中,你將會學到不同的方法去豐富你的腳本,讓它在負載測試的過程中更加有效率。
怎樣去估量一個業務流程的持續時間呢?
當你為一個應用做部署時,一定要准確的估測業務流程的持續時間——登陸需要多久,訂飛機票等等。每一個業務流程都由你腳本中的一步或多步組成。在一個虛擬用戶腳本中,你通過把這些步驟加到一個事務(transaction)中來設計一系列你想要估測的行為。
當你運行一個包含事務的腳本時,LoadRunner將會收集關於事務所花費時間的信息,並且以彩色編碼的段落顯示結果和報告。你通過這個信息去判斷這個應用是否能滿足你的性能需求。
你可以手動 的在虛擬腳本中的任何位置插入一段事務。為了將一系列步驟組成事務,在第一步之前插入一個事務開始(start_transaction)標識,在最后一步之后插入一個事務結束(end_transaction)標識。
這部分你將在你的腳本中插入一段事務來衡量用戶查找和預訂機票這個過程所花費的時間。
在虛擬用戶腳本中插入一段事務(transaction):
- 在VuGen中,打開在第一課時你所創建的Basic_Turorial腳本;
- 點擊"Step Navigator"欄;
-
插入一個事務開始標識:
- 在Step Navigator中,定位到步驟:Image: Search Flights Button.
- 雙擊該步驟以找到對應在編輯器中的位置;
- 點擊View >Steps Toolbox,右側將出現工具欄;
- 在工具欄中Common下,找到lr_start_transaction並把他拖進編輯器中,並把它放在web_image步驟前。此時開始事務對話框會被打開;
- 在Transaction Name欄中填寫"find_confirm_flight"並點擊"OK"。Vugen將在Step Navigator中插入一個lr_start_transaction的步驟以及一個相應的叫做lr_start_transaction的方法在編輯器中。
-
插入一個事務結束標識:
- 在Step Navigator中,定位到步驟:Submit Data: reservations.pl_2;
- 雙擊,定位到編輯器中相應的代碼行;
- 在Steps Toolbox的Common下找到lr_end_transaction,並把它拖到web_submit_data這部分代碼的后面,此時結束事務對話框會被打開;
- 確認Transaction Name為"find_confirm_flight",然后點擊"OK"。Vugen會在左側的Step Navigator中插入一個lr_end_transaction步驟,並在編輯器相應的位置插入一個lr_end_transaction方法。
現在你知道該怎么樣去定義"find_confirm_flight"這個事務了。
要怎樣才能模仿多個用戶?
在你的模仿中,你記錄了一個預定航班和選座的過程。但是真實的生活中,往往多個用戶會有不同的選擇。為了改進你的測試,你需要檢查當多個用戶做出不同的選擇時(Aisle,Window或None)預定是否依然能正常工作。
為了完成這個願望,你需要參數化你的腳本。這就意味着你要把你錄制的值,比如Aisle,用參數來替代。你將在一個參數文件中替換這些參數的值。當你運行腳本時,虛擬用戶將會使用參數文件中的值(Aisle,Window或None)以便更加真實的模擬一個客戶端環境。
參數化你的腳本:
-
找到你想要更改值的區域:
- 選擇View>Step Navigator,在左側欄中打開Step Navigator;
- 在Step Navigator中定位到Submit Data:reservations.pl這一步;
-
右鍵點擊Submit Form:reservations.pl這一步,選擇Show Arguments。Submit Form Step Properties對話框打開了:
這個圖標代表有定值。
-
改變定值為可變值:
- 在Submit Form Step Properties對話框中選擇第七行seatPref;
- 點擊seatPref右側的
按鈕,Select Or Create對話框出現:
-
創建一個參數:
- 在Parameter name處填寫seat;
-
點擊"OK",Submit Form Step Properties對話框中VuGen將
圖標替換成
圖標。
- 點擊
圖標,Parameter Properties對話框打開:
-
為參數指定值:
- 點擊Add Row;
- 將Value改成Window;
- 點擊Add Row;
-
將Value改成None;
備注:值並不是大小寫敏感的。
- 對話框的Select Column和File Format部分保持默認設置。
-
定義測試將如何改變數據:
- Update value on保持默認設置:Each Iteration;
- 點擊"Close"關閉Parameter Properties對話框;
-
點擊"OK"關閉Submit Form Step Properties對話框。
你現在已經為seating preference創建了一個參數,當你運行負載測試時,虛擬用戶會使用參數中的值而不使用你事先錄制好的腳本中的值——Aisle。
當你運行腳本時,Replay log里將會告訴你每次重復所用到的參數中的值。虛擬用戶第一次運行使用的是Aisle,第二次是Window,第三次是None。
我怎樣確認網頁上的內容?
當你運行一個測試時,你經常需要確認返回頁面上是否包含某些特定內容。Content check功能將會在腳本運行時自動幫你在頁面上檢查你的預期信息。你可以插入兩種內容檢查:
Text Check:在網頁上檢查一段文字;
Image Check:在網頁上檢查一張圖片。
在這一部分你將插入一個text check去檢查是否Find Flight字樣出現在HP Web Tours的Reservations頁面上。
插入一個text check:
- 點擊切換到Step Navigator欄;
- 在Step Navigator欄中定位到Submit Form:reservations.pl這一步;
-
在VuGen工具欄上,點擊Show Snapshot pane按鈕
讓Snapshot欄顯示出來;
-
在Step Navigator中Submit Form:reservations.pl的截圖標志,相應的截圖將出現在Snapshot欄中:
-
從VuGen的菜單中點擊View>Steps Toolbox。Steps Toolbox欄出現;
- 在Steps Toolbox的Search框中輸入web_reg並在Filter Results中定位到web_reg_find這一步;
-
將web_reg_find這一步拖拽到web_submit_form方法前:
Find Text Dialog打開了:
-
在Find Text對話框中,在Search for specific Text框中輸入Find Flight,並點擊"OK";
-
VuGen插入一個web_reg_find步驟到Step Navigator中,和一個相應的web_reg_find方法到編輯器中。
當你回放腳本時,VuGen將會查找文字"Find Flight"並在回放log中表明是否找到相應文字。
我應該怎樣去生成調試信息?
在測試中 的一些點上,你想讓LoadRunner生成並發送一些和腳本運行時相關的消息,這些消息既會顯示在Output欄中的Replay log中,也會顯示在Controller的Output窗口中。你可以生成標准輸出信息,或生成信息以指出錯誤所在之處。
對待錯誤消息的推薦處理方式是檢查Failed狀態,如果發現了狀態為Failed的信息,你讓VuGen去生成一個錯誤消息。更多的詳細信息請查看HP LoadRunner Function Reference中的例子。
在教程的本部分,你將讓VuGen在應用完成一次完整的預訂后插入一條輸出信息(Output Message)。
插入一條輸出信息:
- 點擊Step Navigator欄;
- 在Step Navigator欄中定位到最后一步:Image:SignOffButton;
- 雙擊Image:SignOffButton這一步,編輯器中顯示相應的web_image方法;
- 在Steps Toolbox中Common下定位到lr_output_message方法;
-
將lr_output_message方法拖拽到web_image方法后,Output Message對話框打開;
- Message Text中填寫:The flight was booked;
-
點擊"OK"。VuGen添加一個lr_output_message的方法到腳本中,並且在Step Navigator中生成相應的一步。
-
點擊VuGen工具欄中的Save按鈕
保存腳本。
請注意,插入一條錯誤消息你要重復相同的過程,除非在Steps Toolbox中選擇lr_error_message方法而不是lr_output_message方法。
我的腳本回放真的成功了嗎?
在這一部分,你將學習運行強化后的腳本並在Replay log中查找text check信息。你將會檢查text check的結果以及事務和參數化的詳細信息。
默認情況下,image(圖片)和text(文本)的檢查在回放過程中是禁用的,因為它們需要更多的內存。如果你想要執行圖片或文本的檢查,你需要在runtime settings中enable他們(使它們可用)。
-
使圖片和文本檢查可用:
- 點擊Replay>Runtime Settings;
- 選擇nternet Protocol>Preferences;
- Enable image and text check;
- 點擊"OK"。
-
運行腳本:
點擊VuGen工具欄上的Replay按鈕
,VuGen開始運行腳本,在Output欄的Replay log中生成條目信息。
等待腳本完成運行。
-
定位文本檢查:
- 點擊Output欄,選擇Replay;
- 在Replay log中點擊鼠標,按Ctrl+F進行搜索;
-
搜索web_reg_find;
點擊Find Next,你先后會搜索到符合的信息:
web_reg_find started
Registering web_reg_find was successful.
這其實不是真正的text check,這是在表單提交后進行的查詢。
點擊Find Next顯示下一處包含web_reg_find的地方:
Registered web_reg_find successful for "Text=Find Flight" (count=1)
這行表明text被找到,如果有人改變了網頁並移除了Find Flight字樣,那么在之后的運行中,Output將指出找不到相應的text。
-
定位一個事務的開端:
- 在Replay log中點擊Ctrl+F打開搜索對話框;
- 搜索"Transaction",提示會以藍色字體表現。
-
檢查參數的替代值:
- 在Replay log中點擊Ctrl+F打開搜索對話框;
- 搜索"Parameter",log中告訴你"seat"="Aisle"。
- 選擇File>Save或點擊VuGen工具欄上的Save按鈕
保存。
第五課:創建一個負載測試場景
在之前的課程中,你用VuGen來驗證你的虛擬用戶腳本。在本節課中,你將在多個虛擬用戶負載你的系統下來測評你的系統,你將模擬10個客戶端不同程度的同時使用訂票系統,並在此負載下觀察系統的運行。為了設計並運行這個測試,你需要使用LoadRunner Controller。
場景目標:
在本節課中,你的目標是創建一個場景來模擬十個不同的用戶並發的進行登陸,查詢飛機票,預訂飛機票,檢查旅程與注銷的行為。
介紹一下LoadRunner Controller
負載測試意味着要在典型的工作場景下測試你的系統。比如,你需要對許多旅游客戶同時在網上對同一個票務預訂系統進行操作的情況進行測試。
你設計場景是為了模擬真實的情況。為了達到這個目的,你需要能夠對你的系統產生負載,並且對負載進行時間上的編排(因為用戶不會同時登陸和注銷)。你也需要模擬不同用戶的不同行為。比如有些用戶用火狐瀏覽器去訪問這個系統,而其他的用戶則用IE。用戶也會通過不同的網絡連接到該系統,比如modem,DSL,或cable。你在場景中創建並保存這些設置。
Controller為你提供能夠讓你真實的模擬你的工作環境而創建與運行測試所需要的所有工具。
我怎么樣開始使用Controller?
要創建一個場景,你首先要打開LoadRunner Controller。
-
打開HP LoadRunner Controller:
HP LoadRunner Controller打開並顯示New Scenario對話框。
-
選擇一個Scenario Type(場景類別)。
有兩種Scenario Type:
Manual Scenario:讓你能夠控制虛擬用戶的數量以及他們分別運行腳本的次數,並且能夠讓你測試你的系統同時能夠響應多少用戶的操作。
你可以根據你的業務需求分析用百分比模式(Percentage Mode)來對腳本間虛擬用戶的總數進行分配。如果你正常安裝LoadRunner的話Percentage Mode這個默認是被勾選的。如果它被勾選了,你要把它取消勾選。
Goal-Oriented Scenario:為了驗證你的系統是否可以達到一個特殊的目標。例如,你可以基於一個事務的響應時間或一秒鍾執行的事務數來驗證,那么LoadRunner會為你基於這些目標自動的創建一個場景。
-
添加一個Vuser腳本到負載測試中:
在本次教程中,你只會使用一個腳本,讓所有的用戶都模擬相同的操作。想要多方面多角度的模仿真實世界中的用戶操作,你可以創建不同的虛擬用戶群,每一個群都用不同的腳本和不同的用戶設置。
你之前在VuGen中錄制的腳本包含了你想要測試的業務流程,包括登陸,搜索飛機票,買飛機票,檢查飛機票,以及退出網站。你將要把類似的腳本添加到場景中,並配置場景,以實現8個不同的用戶同時在這個飛機票預訂系統上進行並發操作。在本次的測試中,你還需要額外添加兩名虛擬用戶。
為了實現這個目的,你需要提供一個和你之前創建的那個腳本類似的腳本。在這里我們建議你使用給出的樣本腳本。
-
如果basic_script已經在Available Scripts欄中(我們之前創建的那個叫basic_tutorial,這里教程說的有些偏差,大家理解意思就可以,實際操作可以隨便一點,不用一板一眼的照書來),點擊add按鈕將腳本添加到Scripts in Scenario欄中。
- 如果這個basic_script沒有在左側的Available Scripts中列出,點擊Browse按鈕找到它並把它加到Scripts in Scenario欄中來。
- 點擊OK,LoadRunner Controller打開了並顯示你所創建的新場景的Design欄。
-
初識Controller
Controller的Design欄是你設計你的負載測試的主要接口。Design欄又分為三欄:
- Scenario Groups欄:你在該欄中配置虛擬用戶組。你創建不同的用戶組來模擬系統的用戶種類並指定操作該應用系統的虛擬用戶數量以及這些虛擬用戶所用的機器種類。
- Service Level Agreement欄:當你設計一個負載測試場景時,你可以為性能的度量定義goals或SLAs(Service Level Agreements)。當你運行場景時,LoadRunner收集並存儲性能相關的數據,Analysis將收集的數據和SLAs做對比好對定義好的度量確定SLA的狀態。
- Scenario Schedule欄:在Scenario Schedule欄,你設定負載行為以精確模仿真實世界中的用戶行為。你通過虛擬用戶將要運行的應用,該應用相應部分的負載比率,負載測試的持續時間,以及負載是如何結束的來定義用戶的操作。
我怎樣修改腳本中的細節?
按照以下的方法來修改腳本中的細節:
-
在Scenario Groups欄中檢查一下Group Name列下的Script名為:basic_tutorial
-
改變Group的名字:
- 在Scenario Groups欄中選擇basic_tutorial並點擊Details按鈕
,於是Group Information對話框打開了:
- 將Name改為一個更有意義的名字,比如:travel_agent;
- 點擊OK,新名字將顯示在Design欄的Scenario Groups欄下。
- 在Scenario Groups欄中選擇basic_tutorial並點擊Details按鈕
我怎樣對系統產生一個負載?
在你添加你的虛擬用戶腳本到你的場景后,你將要配置負載發生器(load generator),也就是你對目標系統產生負載的計算機。
定義:一個負載發生器意味着一台能夠運行多個虛擬用戶並對系統產生負載的計算機。你可以用許多負載發生器,每個發生器主持着多個虛擬用戶。
在這一部分,你將學習關於向場景中添加負載發生器,測試負載發生器的連接。
添加負載發生器:
在Controller工具欄中點擊Load Generator按鈕。負載發生器對話框打開了:
Load Generator對話框允許你查看與配置你場景中定義的負載發生器,上圖中顯示了一個叫localhost的負載發生器的詳細信息。localhost這個負載發生器的狀態為"Down"。這表明Controller沒有連接到loadhost這個負載發生器。
在本教程中,你將用你的計算機作為復雜發生器。
備注:在一個典型的操作型系統中,你可能會有多個負載發生器,每一個負載發生器都擁有多個虛擬用戶。
測試負載發生器的連接:
當你運行一個場景時,Controller會自動連接負載發生器所在的機器(load generator machine)。然而,你可以在嘗試運行腳本前測試這些連接。
-
在Load Generator對話框,選擇localhost並點擊"Connect":
Controller嘗試連接負載發生器所在機器。當連接已經建立,負載發生器的狀態就會從"Down"變成"Ready";
- 點擊Close。
我怎樣去模仿真實的負載行為呢?
當你已經添加了負載發生器,你就可以准備配置負載行為(load behavior)了。
典型的用戶基本不可能精確的在同一時間log on以及log off系統。LoadRunner允許用戶逐步的log on以及log off系統。它也允許你決定場景的持續時間,以及場景結束的方式。你下面將要進行配置的場景將會相對簡單。然而,當你要設計一個更加貼近真實的場景時,你可以定義更多逼真的虛擬用戶行為。
你在Controller的Scenario Schedule欄中為manual scenario配置負載行為(load behavior)。Scenario Schedule欄被分成三個部分:Schedule Definition區域,Actions格表,以及Interactive Schedule圖表。
你現在將要更改默認的負載設置並配置一個Scenario Schedule(場景時間安排計划):
-
選擇schedule類型與run mode:
在Schedule Scenario欄中,確定你選擇了Schedule By:Scenario,Run Mode:Real-world schedule。
-
設定Scheduled Actions定義:
你可以在Global Schedule格表中或通過操作Interactive Graph圖表來對Scenario Schedules設置Start Vusers,Duration,以及Stop Vusers actions。當你在圖表中進行定義時,對應在格表中的屬性也會有相應的變化與調整。
現在你要進行設置,來讓Global Schedule的格表像下面一樣顯示:
- 建立虛擬用戶初始化:
初始化意味着通過運行腳本中的"vuser_init "action來為一個負載測試准備虛擬用戶(Vusers)和負載發生器(load generators)。依於你系統的配置,在運行前初始化Vusers會帶來更加真實的結果。
- 雙擊Global Schedule格表中的Initialize(上圖中Action下的第一行)。Edit Action對話框彈出並顯示Initialize action;
- 選擇Initialize all Vusers simultaneously;
- 點擊OK。
-
為Vusers指定一個陸續開始的時間(gradual start):
也就是說每隔幾分鍾增加幾個Vuser對系統產生負載是在這里設置的。
-
在Global Schedule格表中雙擊Start Vusers,Edit Action對話框彈出並顯示Start Vusers;
- 如上圖中進行設置,Start 8 Vusers,2 Vusers every 30 seconds;
- 點擊OK。
-
-
計划持續時間:
你需要確定一個持續時間以確保虛擬用戶能夠在指定的時間段內持續執行Schedule action,持續產生負載。如果你設定一個時間段(Duration),腳本會在該時間段內盡可能多的重復運行來滿足需求而忽略掉你在腳本runtime settings中設置的重復次數。
- 確保Interactive Schedule Graph是Edit模式(通過點擊Interactive Schedule Graph工具欄中的Edit Mode按鈕
)。
-
在Interactive Schedule Graph中點擊代表Duration的水平線。線被高亮顯示,如下圖:
- 確保Interactive Schedule Graph是Edit模式(通過點擊Interactive Schedule Graph工具欄中的Edit Mode按鈕
備注:說明會顯示在結束點的上面,點擊Interactive Schedule Graph工具欄中的隱藏說明按鈕來控制它的顯示。
-
向右拖拽鑽石形狀的結束點,到11:30的位置,這樣你就設置好了讓虛擬用戶運行10分鍾腳本。
-
設置一個逐步的關閉:
當應用運行到一個臨界值的時候,逐步關閉虛擬用戶有助,檢查內存泄露以及系統恢復。
- 在Global Schedule格表中雙擊Stop Vusers。Edit Action對話框被打開:
- 如上圖所示,選擇All-2 Users every 30 seconds;
- 點擊"OK"。
- 在Global Schedule格表中雙擊Stop Vusers。Edit Action對話框被打開:
配置好的Global Schedule如下:
我應該怎樣模擬不同種類的用戶呢?
現在你已經配置了一個負載計划表,你需要進一步指定用戶在測試的時候是如何"行為"的。
當你去模擬一個真實用戶的時候,你需要考慮用戶的實際"行為"。這里的"行為"指的是:一個用戶兩個操作步驟之間所需要的停頓時間,對於一個步驟用戶所重復的次數,等等。
在這一部分,你會學到更多關於LoadRunner的runtime settings,並且你會使用到Think Time和Logging。
-
打開runtime settings:
- 在Controller中點擊Design欄;
- 在Scenario Groups欄中選擇travel_agents組;
-
點擊Runtime Settings按鈕,runtime settings對話框將被打開:
Runtime settings允許你模擬不同種類的用戶活動與行為。它們包括:
Run Logic,一個虛擬用戶重復一組操作的次數。
Pacing,重復操作前需要等待的時間。
Log,在測試過程中你想要收集的信息等級。你第一次運行場景時是推薦你生成log信息的,以防你第一次運行時會失敗,log會提供你有關的調試信息。
Think Time,用戶步與步操作之間的停頓時間。由於新老用戶對系統的熟悉度不同,步與步之間的停頓時間也不同,老用戶肯定比新用戶嫻熟的多。虛擬用戶通過think time可以更加真實的模仿真實用戶步與步之間的停頓。
Speed Simulation,用戶通過不同的網絡連接,包括modem,DSL以及cable。
Browser Emulation,用戶通過不同的瀏覽器來查看應用的性能。
Content Check,能夠自動的檢查用戶定義的錯誤。
假設你的應用在出錯時會發送一個自定義的頁面,這個自定義頁面包含ASP Error這個字樣,你需要查找服務器所返回的所有頁面來檢查這些字樣是否包含在內。
你可以讓LoadRunner通過runtime settings中的Content Check在測試過程中自動的完成這個檢查的過程,LoadRunner會自動的檢查你設定的字樣,如果發現則會產生一個錯誤信息。在場景運行時,你可以確認這些內容檢查方面的錯誤。
-
使用Think Time:
- 在Runtime Settings對話框,點擊General>Think Time;
- 選擇Replay think time,並選擇Use random percentage of recorded think;
- Min選50%,Max選150%;
以上的設定將會對錄制的think time使用一個隨機的百分比。例如,如果選擇一個航班時錄制的think time為4s,那么隨機的think time將會在2-6s內(4的50%或150%)生成。(筆者認為:這很好的模擬了新老用戶由於對應用的熟悉程度不同而導致了think time不同這一特點)
-
使用Logging:
- 在Runtime Settings對話框中,點擊General>Log;
- 選擇Enable Logging;
- 在Log options下,選擇Always send messages;
- 點擊Extended log,選擇Data returned by server;
備注:在初始的調試運行階段之后,不建議對負載測試開啟Extend Log模式。本教程中使用它的目的僅在於想要輸出Vuser的log。
- 點擊OK關閉Runtime Settings對話框;
- 保存場景。
在負載的情況下我要怎樣監控系統?
現在你已經定義了你的虛擬用戶在測試中的行為,已經為建立監控器做好准備。
當你對一個應用產生負載時,你想要實時的查看這個應用的性能以及潛在的瓶頸所存在的地方。你將在負載測試的過程中使用LoadRunner的monitor來監控每一層次結構的性能,包括服務器,系統的組件。LoadRunner提供了許多主要的后台系統組件(包括Web,Application,Database,以及ERP/CRM服務器)的監控器。
例如,你可以根據正在運行的Web Server的類別選擇一個Web Server Resources監控器。你可以為相關的監控器買一個證書,比如IIS,並用這個監控器來找出反映在IIS resources中的問題。
在這一章節,你將學會怎樣添加以及配置Windows Resources監控器(monitor)。你可以用監控器來確定負載對你CPU(處理器),disk(硬盤)以及memory resources(內存資源)的影響。
-
選擇Windows Resources Monitor:
-
在Controller的左下角點擊Run欄:
Windows Resources圖標是顯示在圖表視圖區域四個默認圖表中的一個。你將在下一節課中學會如何打開其他的圖表。
-
右鍵點擊Windows Resources圖表並選擇Add Measurements。Windows Resources對話框打開了:
-
-
選擇要監控的server:
-
在Windows Resources 對話框中的Monitored Server Machines區域,點擊Add。Add Machine對話框打開了:
- 在Name欄中填寫localhost(如果你的負載發生器在其他的機器上,你可以填寫那台機器的server名或IP地址);
- 在Platform列表中,選擇負載發生器所在機器的操作平台;
-
點擊"OK"。
默認的Windows Resources measurements會在Resource Measurements on <server machine>列表中列舉出來。
-
-
激活監控器(monitor):
在Windows Resources對話框中點擊"OK"關閉對話框,monitor就被激活了。
第六課:運行負載測試
當你運行負載測試時,LoadRunner會對系統產生負載。你可以隨后用LoadRunner的監控器和圖標來觀察負載的情況下系統的性能。
初始Controller Run視圖
Controller的Run欄是場景的管理和監控中心。它包含五個欄:
- Scenario Group欄:左上角的欄,你可以觀察組中虛擬用戶的狀態,你可以通過右邊的按鈕開始、停止、重置場景。
去查看獨立的虛擬用戶狀態,在場景中通過手動添加更多虛擬用戶來對應用增加負載;
- Scenario Status欄:右上角的欄,你可以在此查看負載測試的一個總結,包括運行的虛擬用戶的數量,以及每一個虛擬用戶操作的狀態;
- Available Graphs欄:在中間左側的欄,你可以看到一列LoadRunner的圖表。為了打開一個圖表,選擇一個樹中的圖表,把它拖拽到Graph Viewing區域;
- Graph Display欄:在中間右側的欄,你可以自定義顯示一個到八個圖表(View>View Graphs);
-
Graph Legend欄:在底部的欄,你可以查看你所選擇的圖表中的數據。
備注:Run欄在Controller的底部。
我怎樣運行一個負載測試場景?
在這一部分,你將打開場景:
-
打開Controller Run視圖:
點擊Controller底部的Run欄。
注意到Scenario Groups欄中的Down列下有8個虛擬用戶,這些虛擬用戶是你創建場景(Scenario)時所創建的。
由於場景還沒有運行,所有其他的計數器都保持在0,圖表視圖區域的所有圖表都是空的,當你在下一步運行場景時,圖表和計數器將會開始顯示信息。
-
開始場景:
點擊Start Scenario按鈕或選擇Scenario>Start來開始運行場景。
如果你是按教程第一次運行的話,Controller會開始場景並將結果文件自動保存到負載發生器的temp文件夾下。
如果你是在重復做測試,你會被建議去覆蓋已有的結果文件。
點擊No,因為第一次負載測試的結果要用來和之后的測試結果進行比對。之后設置結果保存目錄的對話框被打開:
確定一個新的保存結果的文件夾路徑,為每一次的測試結果起一個有意義的獨特的名字,因為分析圖表時你可能會需要把多次場景的運行結果疊加。
在負載情況下該如何管理應用程序呢?
你會使用Controller的在線圖表來觀察監控器(monitors)所收集的性能數據。你通過這些信息來讓你的系統遠離潛在的危機。
-
檢查性能圖表:
Run欄下的Graph Display欄中顯示了如下的默認圖表:
- Running Vusers(運行着的虛擬用戶)-Whole Scenario graph(全景表):顯示在指定時間運行着的虛擬用戶數量;
- Transaction Response Time(事無響應時間)-Whole Scenario graph(全景表):顯示了每一個事務完成所花費的時間;
- Hits per second(每秒點擊數)-Whole Scenario graph(全景表):顯示場景運行時每秒對web服務器的點擊數(HTTP請求數);
- Windows Resources graph(Windows資源表):顯示在場景運行時系統資源的使用情況。
-
高亮個性化定制:
- 雙擊Windows Resoures表,它將放大到占據整個圖表顯示欄。注意到每個measurement都是用不同的顏色來表示,每一行都以相同的顏色對應圖中的一條線;
- 選擇哪一行,哪一行在圖表中就會被高亮顯示;
- 再雙擊圖表,讓其縮小到原始尺寸。
- 雙擊Windows Resoures表,它將放大到占據整個圖表顯示欄。注意到每個measurement都是用不同的顏色來表示,每一行都以相同的顏色對應圖中的一條線;
-
查看Throughput(吞吐量)信息:
在Available Graphs欄中,Web Resources Graphs下,選擇Throughput表並把它拖拽到Graph Display欄中。Throughput表的measurements顯示在Graph Display欄和Graph Legend欄中。
Throughput(吞吐量)表顯示虛擬用戶從服務器接收 的數據在任意指定的某一秒中的總量(以bytes衡量)。你可以將此圖與Transaction Response Time(事務響應時間)圖表進行比較以檢查Throughput(吞吐量)是如何影響Transaction(事務)的性能的。
當吞吐量的規模隨着時間的進行與虛擬用戶數的增加而變大時,這表明帶寬是足夠用的。當圖表隨着虛擬用戶數量增加而趨於相對平緩時,我們有理由去猜測與推斷帶寬限制了數據傳輸量。
要怎樣才能實時的觀察一個虛擬用戶的運行?
當我們模擬用戶的時候,你可以實時的查看虛擬用戶的操作以確定他們執行的操作是正確的。Controller通過Runtime Viewer讓你能夠實時的查看虛擬用戶的操作。
形象的觀察一個虛擬用戶的操作:
-
在Controller的Run欄中,點擊Vusers按鈕。Vusers對話框打開:
Status列顯示了每個虛擬用戶的狀態。在上面的例子中,你可以看到四個虛擬用戶在運行,四個已經處於down掉狀態。Scheduler中的Start Vusers操作讓Controller一次釋放兩個虛擬用戶。隨着場景的進行,虛擬用戶將會2個2個的以30秒為周期被添加到組中。
- 在虛擬用戶列表中選擇一個虛擬用戶;
- 點擊Vusers工具欄上的Show the selected Vusers按鈕
。Runtime Viewer被打開並顯示選擇的虛擬用戶所執行的操作。Runtime Viewer將會隨着虛擬用戶在腳本中步驟的進行而更新。
- 點擊Hide the selected Vusers按鈕
,關閉Runtime Viewer。
我在哪里可以看到一個關於虛擬用戶操作(Vuser actions)的總結?
想要單獨看一個虛擬用戶在運行測試的過程中的進展,你可以顯示一個包含虛擬用戶操作文字總結的log文件。
查看虛擬用戶操作的文字性總結:
- 在Vusers窗口選擇一個running狀態的Vuser;
-
點擊Vusers工具欄中的Show Vuser Log按鈕
。Vuser log對話框被打開:
log中包含了與用戶操作相對應的信息。比如,在上面的窗口中,Virtual User Script started表明虛擬用戶運行的開始時間。滑到底部你會觀察到隨着虛擬用戶操作的進行,相應的新信息也會被添加進來。
- 關閉Vuser Log對話框,以及Vusers對話框。
怎樣在測試中增加負載?
為了給系統增加負載,你可以在測試的過程中手動的添加更多的虛擬用戶。
-
為了在負載測試時增加負載:
- 確定當前是在Controller的Run欄;
- 點擊Run/Stop Vusers按鈕,Run/Stop Vusers對話框被打開並顯示了當前場景中運行的虛擬用戶數;
- 在#列輸入你想要向組中添加的虛擬用戶數,想要再添加兩個虛擬用戶,則在#列把數字8改為2;
- 點擊Run按鈕來添加虛擬用戶;
-
選擇Run New子按鈕選項。
兩個額外的虛擬用戶被添加到travel_agent組中並且在localhost負載發生器上運行。場景狀態欄將顯示現在有10個虛擬用戶正在運行。
你可能會收到LoadRunner Controller無法激活額外的虛擬用戶的消息。這是因為你可能在用你的本機來當作負載發生器而且它只有很有限的內存資源。通常來說,用一個專業的機器作為負載發生器就可以避免這種情況的發生。
應用在負載的情況下是怎樣執行的?
在你的Scenario Status欄【Run欄中】中,你可以仔細的看到有哪些虛擬用戶引起了應用的問題,事務失敗數以及錯誤數偏高表明了你的應用在負載下可能執行的並不好。
-
檢查場景的狀態:
Scenario Status欄的頭部顯示了場景的整體狀態:
-
查看虛擬用戶操作的分解:
-
點擊Scenario Status欄中的Passed Transactions,Transactions對話框被打開並列出了事務的詳細;
- 點擊Close關閉Transactions對話框。
-
你的應用遭遇錯誤了嗎?
在重負的情況下,應用開始出現失敗的情況,你可能會遇到錯誤和事務的失敗。你的Controller會在Output窗口中顯示錯誤信息。
-
檢查error或warnings消息:
-
選擇View>Show Output,你可以按照種類對信息進行排序,例如warnings或errors;
Output對話框被打開並顯示了消息信息文字,包括產生的所有消息數,虛擬用戶和負載發生器產生的錯誤,以及發生錯誤的腳本。
- 要查看一條消息的詳細內容,選擇消息並點擊"Details",Detailed Message Text框出現,顯示了消息詳細完整的內容文本。
-
-
查看log信息的詳細內容:
你可以通過點擊相應列的藍色鏈接查看關於每條消息、虛擬用戶、腳本以及關聯的負載發生器的錯誤信息。
例如:想要知道腳本中哪里出了錯,查看點擊進入Total Message列。Output窗口將顯示你選擇的錯誤代碼的所有相關信息,包括時間,重復次數,以及腳本中出錯的位置行。
-
進入查看Line Number列:
點擊Line Number列下的鏈接,VuGen將被打開,顯示了腳本中出錯的行。你可以通過這一信息來幫你確認哪些響應時間較慢的事務導致了應用在負載下的失敗。
我怎樣得知場景是否已經運行結束?
在場景運行的總結處,Scenario Status欄的頭部顯示了Down這一狀態。這說明場景中所有的虛擬用戶都已經運行結束。
你可以打開Vsuers對話框來分別查看每個虛擬用戶的狀態。虛擬用戶對話框顯示了每個虛擬用戶執行的重復次數,成功的重復次數以及經歷的時間(Elapsed Time)。
你的系統是否在負載下運行良好?
想要知道你的系統是否在負載下依舊運行良好,你要去查看事務的響應時間並決定響應時間是否在可接受的范圍內。如果事務的響應時間在場景中增加,你需要去查找瓶頸出在哪里。你會在最后一課中學習更多關於這方面的知識。
一旦一個問題被發現,就可能需要包括開發,DBAs(數據庫管理員),網絡以及其他方面的系統專家來修復這個問題。在做出適當調整后,我們需要重新進行負載測試來驗證該次做出的調整是否滿足了所需的要求。你重復這一循環來使得系統的性能不斷得到優化。
為了便於你再次運行具有相同配置的場景,選擇File>Save或點擊Controller工具欄中的Save按鈕
進行保存。
第七課:分析你的場景
在之前的課程中你學會了如何設計,控制,運行一個場景。你運行負載測試,就一定希望能夠分析運行的結果,以找出需要排查的問題來提高你的系統性能。在你的分析的過程中所生成的圖表和報告代表了你場景性能的重要信息。通過這些圖表和報告,你可以找到你應用程序中存在的瓶頸,以確定需要做怎樣的修整才能提高它的性能。
Analysis Session是怎么工作的?
Analysis session(分析會話)的目的是為了發現你系統性能上存在的缺陷並找到其根源,例如:
-
- 測試的預期達到了嗎?在負載的情況下客戶終端的事務時間是多少?SLA滿足目標嗎?事務的平均事務時間是多少?
- 系統的哪些部分會導致降低系統的性能?網絡和服務器的響應時間是多少?
- 你可以通過聯系事務響應時間和后台監控模型來找到一個可能的原因嗎?
在后續的章節中你將會學習如何打開LoadRunner Analysis,並建立與查看能夠幫你找到性能問題與根源之所在的圖表和報告。
我怎樣開始我的分析會話?
-
打開HP LoadRunner Analysis:
雙擊桌面上的Analysis圖標,LoadRunner Analysis被打開;
-
打開分析會話文件:
為了達到本節課的目的,能夠舉例分析說明盡可能多樣的結果,我們將會運行一個和你在之前的章節中運行的場景相似的場景。但是這一次,你的場景中將包含70個虛擬用戶,而不再是10個。你現在將要打開針對於你的測試結果所創建的分析會話。
- 在Analysis窗口選擇File>Open,Open Analysis Session對話框被打開:
- 在你的<LoadRunner Installation>\tutorial文件夾下選擇analysis_session文件並打開,Analysis打開了你選擇的會話文件。
- 在Analysis窗口選擇File>Open,Open Analysis Session對話框被打開:
初始Analysis窗口
Analysis包括以下主要欄:
- Session Explorer(會話瀏覽器)
- Properties pane(屬性欄)
- Graph Viewing pane(圖表查看欄)
-
Legend pane(說明欄)
- Session Explorer:左上角的欄,Analysis顯示了可以查看的圖表和報告。從這里你可以增加一些新的圖表或報告也可以刪除一些不想看的圖表或報告。
- Properties欄:左下角的欄,Properties欄顯示了你在Session Explorer中選擇的圖表或報告的詳細信息,黑色字體部分的是可以進行編輯的。
- Graph Viewing欄:右上角的欄,Analysis顯示圖表的地方。默認情況下,Summary Report(總結報告)當你打開一個會話的時候會顯示在這里。
- Legend欄:右下角的欄,你可以在這里查看所選擇的圖表的數據。
備注:還有一些可以從工具欄中訪問的欄,這些欄可以進行拖拽並在屏幕上任意地方進行拖放。
我達到了我的目標嗎?(Service Level Agreement)
在這一部分,我們將介紹一下Service Level Agreement,即我們所說的SLA。
SLAs是你為你的負載測試場景所定義的特殊目標。Analysis將這些目標和LoadRunner運行時收集與存儲的性能相關的數據相比較,然后為目標判斷SLA的狀態(通過或失敗)。
例如,你可以為你腳本中事務的平均事務時間定義一個具體的目標,或臨界值。在測試運行結束后,LoadRunner將你的目標和實際錄制的平均事務時間相對比。Analysis將顯示你定義的每個SLA的狀態,通過或失敗。例如,如果實際的平均事務時間沒有超過你定義的臨界值,SLA的狀態就將是通過的。
作為你目標定義的一部分,你可以讓SLA將負載的標准也考慮在內,換句話說也就是可接受的臨界值將會隨着負載的等級不同而變化,例如,Running Vusers,Throughput等等。當負載增加,你可以允許一個更高的臨界值。
根據你所定義的目標,LoadRunner通過以下幾種方法中的一種確定了SLA的狀態:
按照時間軸上的時間來定義SLA的狀態:Analysis在運行時按固定的時間間隔顯示SLA的狀態(比如:每隔5s)。
按整個運行過程來定義SLA的狀態:Analysis為整個場景的運行顯示一個單獨的SLA狀態。
SLAs可以在場景在Controller中運行前就定義好,也可以之后在Analysis中來定義。
在后續的部分中,你將要用HP Web Tours這個樣例來定義一個SLA。假設HP Web Tours的管理員任何時候都想要知道book_flight和search_flight的平均事務時間是否超過了固定的值。為了達到這個目的,你可以選擇事務並設置臨界值(threshold values)。這些臨界值就是平均事務時間在可接受范圍內的最大值。
你也將設置三個臨界值來將具體的負載標准考慮在內,在這個例子中我們指的就是Running Vusers(運行着的虛擬用戶)。換句話說,隨着運行的虛擬用戶數的增加,臨界值也隨之升高。
這是因為雖然HP Web Tours的管理員希望平均事務時間越低越好,但是我們不得不承認這一年中的有些時候HP Web Tours站點確實會承擔相比於平時更大的負載。例如,在旅游高峰季的時候,會有更多的旅游客戶去登陸網站來預訂飛機票,檢查航班等等。在這種可以理解的高負載情況下,一個稍微長一點的平均事務響應時間將是可以接受的。
你將設定SLA來考慮三個負載場景,輕負載,正常負載和高負載。每一個場景都有它的臨界值。
我怎樣定義一個SLA?
你將在場景運行后在Analysis中定義一個SLA。
備注:推薦在場景運行前,在Controller中定義一個SLA。但是出於本教程的目的,你還沒有對之前的章節中運行的場景進行分析,你將會在Analysis中定義SLA。想在Controller中定義一個SLA,在Design欄的Service Level Agreement模塊中點擊"New"。
定義一個SLA:
-
打開SLA Wizard(向導):
- 在LoadRunner Analysis中,選擇Tools>Configure SLA Rules。Service Level Agreement對話框被打開:
-
點擊"New"打開Service Level Agreement向導:
注意:當你第一次打開SLA向導,Start頁會顯示在你面前。如果你不希望下次運行向導的時候再看到這個頁面,勾選"Skip this page next time"。
- 點擊"Next"。
- 在LoadRunner Analysis中,選擇Tools>Configure SLA Rules。Service Level Agreement對話框被打開:
-
為你的目標選擇一個度量尺度。
- 在Select a Mearsurement for Your Goal頁面,選擇Transaction Response Time為Average:
- 點擊"Next"。
- 在Select a Mearsurement for Your Goal頁面,選擇Transaction Response Time為Average:
-
選擇要監控的事務。
在Select Transactions頁面,在Available Transactions列表中選擇一個想要監控的事務。
-
雙擊check_itinerary事務,將它移到Selected Transactions列表中:
- 點擊"Next"。
-
-
設置負載標准。
在Set Load Criteria頁面,你要讓SLA考慮到不同的負載場景。
- 從Load Criteria下拉列表中選擇Running Vusers;
-
像下圖中一樣設置Load Values:
在上圖中,你設置了SLA,對三個潛在的負載場景定義了一個可以接受的平均事務時間:
-Light Load(輕負載):0到19個虛擬用戶;
-Average Load(正常負載):20到49個虛擬用戶;
-Heavy Load(重負載):多於50個虛擬用戶;
- 點擊"Next"。
-
設置臨界值。
在Set Threshold Values頁面,你為check_itinerary事務定義了一個可以接受的平均事務時間。
像下圖中所示來對臨界值進行設定:
在此你僅僅指出了下列平均事務時間是可以接受的:
-Light Load(輕負載):小於等於5s;
-Average Load(正常負載):小於等於10s;
-Heavy Load(重負載):小於等於15s。
-
保存SLA。
先后點擊"Next"和"Finish",窗口關閉。
Analysis將會把你的SLA設置應用到Summary Report(總結報告)中,之后的report將會被更新,包含所有相關的SLA信息。
我要怎樣查看性能的總結?
Summary Report欄顯示了關於場景運行的總體信息和統計,以及所有相關的SLA信息。例如,根據我們定義的SLAs性能最壞的事務都有哪些,在特定的時間間隔下特定的事務如何執行,以及所有的SLA狀態。你要從Session Explorer中打開Summary Report。
-
什么是總體場景統計?
在Statistics Summary模塊,你可以看到最多有70個虛擬用戶在本次測試中運行。其余的統計諸如total/average throughput,total/average hits等信息也會被顯示出來。
-
性能最差的事務有哪些?
這五個最壞事務的表單會告訴你:根據你定義的SLA,哪5個事務的性能最壞。
你可以看到在check_itinerary事務執行的時間段內,有66.4%的時間超過了SLA中所定義的臨界值。在整個運行過程中超過SLA臨界值程度的平均百分比為200.684%。
-
在哪些時間段內臨界值被超越?
Scenario Behavior Over Time模塊將會顯示不同時間內事務的性能,綠色的方塊顯示的是事務性能在SLA所設定的臨界值內的時間段,紅色的方塊顯示的是失敗的事務,灰色的方塊顯示的是沒有相關的SLA被定義。
你可以看到對於你定義了SLA的事務,check_itinerary在多數時間段內性能超過了臨界值。
-
什么是總體事務性能?
Transaction Summary模塊列出了每一個事務的性能總結。
我們還可以看到check_itinerary事務失敗了28次。
回顧每個事務的時間,90 Percent這一列顯示了特定事務90%次運行所用的時間。你可以看到90%的check_itinerary事務在測試中執行耗時65.754秒,是它平均時間(32.826秒)的兩倍,這意味着該事務在大多數情況下響應時間較慢。
注意SLA Status這一列顯示了和"在SLA中定義的事務"相關的總體狀態:check_itinerary的SLA Status為Failed。
我要看的到的性能!
你可以在Session Explorer欄中訪問可觀看的性能圖。接下來你要查看並分析Average Transaction Response Time圖。
-
打開Average Transaction Response Time圖:
-
在Graphs下的Session Explorer中選擇Average Transaction Response Time。Average Transaction Response Time圖將會顯示在圖顯區域。
-
在Legend欄點擊check_itinerary事務,相應在圖中的事務折線會被高亮顯示。
圖上的點代表了場景運行中某一時間點事務的平均響應時間。讓你的鼠標停留在圖中的某點上,一個黃色的方框將出現並顯示該點的坐標信息。
-
-
分析結果:
注意到check_itinerary事務的平均事務時間波動很大,並且在場景運行到2分56秒時達到了一個75.067秒的峰值。
在一個性能良好的服務器上,事務將會有一個比較平穩的平均時間折線,在圖的最下方,你可以看到logon,logoff,book_flight,以及search_flight事務都有着相對更穩定的平均事務時間。
我的服務器是否性能良好?
在課程之前的部分你看到了你的服務器性能的不穩定性。現在你將要分析70個Running Vusers(正着運行的虛擬用戶)對你的系統所產生的影響。
-
研究虛擬用戶的行為:
在Graphs下的Session Explorer中點擊Running Vusers。Running Vusers圖將顯示在圖顯區域。
你可以看到虛擬用戶逐漸的開始運行,之后經歷了一個大約三分鍾的長度,這段時間內70虛擬用戶同時運行,再后來虛擬用戶逐漸停止運行。
-
在該圖中進行過濾,以使你只能看到所有的虛擬用戶同時運行時的時間段。
當你在一個圖中進行過濾的時候,圖中的數據也會被收縮,收縮到只顯示你關心的那部分。其他的部分都將被隱藏掉。
- 在圖上點右鍵,選擇Set Filter/Group By,或者你也可以點擊Analysis工具欄中的Set Filter/Group By按鈕
。
- 在Filter Condition區域,選擇Scenario Elapsed Time行Values列。
-
按照下圖中進行設置:
- 點擊"OK";
-
在Graph Settings對話框點擊"OK"。
Running Vusers圖現在只顯示1:30到3:45這段時間在場景中運行着的虛擬用戶。所有其他的虛擬用戶將被過濾掉。
注意:要清理filter,在圖上點擊右鍵,選擇Clear Filter/Group By,或者也可以點擊Analysis工具欄中的Clear Filter/Group By按鈕
。
- 在圖上點右鍵,選擇Set Filter/Group By,或者你也可以點擊Analysis工具欄中的Set Filter/Group By按鈕
-
聯系Running Vusers圖和Average Transaction Response Time圖來比較他們的數據。
你可以將這兩個表拼接在一起以觀察一張圖中數據對另一張圖中的數據所產生的影響,這種做法叫做關聯兩張圖。
例如,你可以將Running Vusers圖和Average Transaction Response Time圖進行關聯來查看大量的虛擬用戶對平均事務時間產生的影響。
- 右鍵點擊Running Vusers圖選擇"Clear Filter/Group By";
- 右鍵點擊圖,選擇"Merge Graphs";
- 從Select graph to merge with列表中選擇"Average Transaction Response Time";
-
在Select type of merge下選擇"Correlate",並點擊"OK"。
現在這兩張圖就合在一起顯示了——Running Vusers - Average Transaction Response Time圖。
-
分析相關的圖:
在這張圖中你可以看到隨着虛擬用戶數的增多,check_itinerary事務的平均時間逐漸增加。換句話說,平均響應時間隨着負載增加而增加。
在66個虛擬用戶的時候,平均響應時間出現了一個急劇的(sudden,sharp)增長。我們說這個測試broke the server(沖破了服務器),在多於66個虛擬用戶同時運行時,平均響應時間開始減少。
保存一個模板(template)
至今你已經過濾了一張圖並關聯了兩張圖。下一次你分析場景的時候,你可能會想要看到相同的圖,有相同的過濾與合並條件。你可以將你的merge and filter(合並與過濾)的設置保存到一個模板中,並將它們用於其他的分析會話中。
保存你的模板:
-
選擇Tools>Templates,出現如下對話框:
-
在Templates欄點擊"New"
按鈕,如下對話框被打開:
- 輸入一個名字並點擊"OK";
- 點擊"Save and close"按鈕關閉Apply/Edit Template對話框。
下一次你打開一個新的分析會話並且想要用一個已存的模板時:
- 選擇Tools>Templates,Apply/Edit Template對話框被打開;
- 從列表中選擇你的模板,並點擊"Save and close"。
我怎樣精確定位問題所出自的根源?
至今為止,你已經看到了隨着負載的增加,對check_itinerary事務的平均響應時間會產生一個負面的影響。
你可以更深入的研究check_itinerary事務以便發現哪些系統資源負面地影響了它的性能。
這個自動關聯工具可以將所有包含可能會影響到check_itinerary事務響應時間的數據的圖合並到一起並精確的定位問題發生時還有什么事情正在發生。
-
從graph樹中選擇Average Transaction Response Time圖。
看check_itinerary這一事務,特別在過去的1到4分鍾這一時間段內。平均響應時間直線上升並在3分鍾左右到達峰值。
-
過濾Average Transaction Response Time圖,只查看check_itinerary事務:
- 右鍵點擊圖片,選擇"Set Filter/Group by";
- 在Transaction Name / Value格中選擇"check_itinerary";
- 點擊"OK"。
-
自動關聯圖:
- 右鍵點擊圖,選擇"Auto Correlate";
-
在Auto Correlate對話框中確定Measurement to Correlate選擇的是check_itinerary,並將時間范圍設為從1:20到3:40——你可以直接在框中輸入,也可以在圖中ElapsedScenario Time軸上對紅色和綠色的桿兒進行拖拽。
-
點擊"OK"。
這個Auto Correlated Graph(自動關聯圖)將會顯示在圖顯區域。Check_itinerary這一事務被高亮顯示。
這個自動關聯的圖有個默認的名字:Auto Correlated Graph [1].
-
為該圖重命名:
- 在Session Explorer中的Graphs下右鍵點擊Auto Correlated Graph [1]並選擇"Rename Item",圖的名字變為可編輯狀態;
- 輸入Auto Correlated - check_itinerary並按回車,或者隨便點旁邊的什么地方都行。
-
分析自動關聯圖:
在Legend欄下,從Graph列為Windows Resources的項中找到Measurement為Pool Nonpaged Bytes和Private Bytes這倆Measurements。
在Measurement和Correlation Match列中,你可以看到這些內存相關的measurements(測量尺度),和check_itinerary這一事務的Correlation Match超過了70%。這意味着這些元素的性能和check_itinerary這一事務的性能在指定的時間段內緊緊相關。
我們可以准確的斷定當check_itinerary這一事務的響應時間達到峰值的時候,系統的內存資源將會出現短缺。
我還可以收集到和場景運行相關的其他信息嗎?
除了在分析會話開始的graph樹上能看到的圖外,你可以顯示各種圖來收集其他關於場景運行的信息。
-
點擊Graph>Add New Graph:
Open A New Graph對話框被打開並列舉了包含數據的並能夠顯示的圖的種類:
- Vusers——顯示虛擬用戶及其狀態的信息;
- Errors——顯示錯誤統計;
- Transactions——顯示事務及其響應時間的數據;
- Web Resources ——顯示點擊量,吞吐量,以及連接數據;
- Web Page Diagnostics——顯示你腳本中監控的各個網頁的數據;
- System Resources——顯示系統資源使用的數據;
-
顯示一個新圖:
- 在Open A New Graph對話框中,點擊列出的分類左側的"+"來展開分類;
- 選擇一張圖並點擊"Open Graph"按鈕;
-
點擊"Close"按鈕關閉Open A New Graph對話框。
現在打開一些其他的圖來對你的場景運行情況有一個更好的了解。
我怎樣發布我的發現?
你可以從你的分析會話中通過HTML或微軟的Word報告來發布你的發現。報告是用設計者模板創建的,並且包含了解釋以及對圖和數據的說明。
HTML Reports
HTML報告可以在任何瀏覽器被打開和查看。
創建一個HTML報告:
- 點擊Reports>HTML Report;
- 為你的報告起個名兒,和你要將它保存的路徑;
-
點擊"Save"進行保存。
點擊"Save"后Analysis會自動創建報告並將它顯示在你的瀏覽器中。
你會注意到你的HTML報告的布局和你的分析會話非常相似。你可以點擊左側欄中的鏈接來查看不同的圖。每張圖的描述信息將會在頁面底部給出。
微軟Word報告
你可以將你的分析會話表現在一個微軟的word報告中。Word報告比HTML報告更好理解,因為你可以選擇讓它包含場景的總體信息,測量尺度描述(measurement description)等等。你也可以格式化你的報告,讓它包含你公司的名字和標志(logo),以及作者的詳細信息。
就像任意一個Word文件一樣,這個報告是可以編輯的,所以你可以在你生成的報告中添加更多的評論與發現。
創建一個微軟Word報告:
-
點擊Reports>New Report:
New Report對話框打開了。
-
在General欄中:
- Based on template選擇Detailed report (for single run)
- 為你的Report起一個標題;
- 輸入作者姓名,工作標題,公司名稱。
-
在Format欄中:
默認情況下,建立的報告將會包括一個標題頁面,一個包含內容的表結構,圖的詳細信息以及描述,以及測量尺度描述(measurement description)。你可以選擇性的將腳本中的信息加到報告里,讓你可以查看業務流程步驟中的縮略圖。
你可以通過選擇"Include company logo"找到相應的logo文件位置並加入報告中。Logo文件必須是個".bmp"格式的文件。
-
在"Content"欄中:
-
選擇你要加入到你的報告中的場景運行和分析會話的部分內容。
出於本教材的目的,你要添加一個"Executive Summary"(概要)到Content Items列表中;
-
點擊"Add"按鈕
來打開"Add Content Items"窗口,選擇"Executive Summary"並點擊OK:
"Executive Summary"被加到左側的Content Items欄中。
選擇"Executive Summary",在右側編輯框中輸入下列文字:
- Objectives: The objectives of the test scenario were to....
- Conclusions: The conclusions I reached are as follows:
- 在Content Items欄中,選擇"Largest URLs by Average Kbytes"並點擊Delete按鈕
。這樣做將不會把該圖包含在報告中。
- 改變報告中顯示內容項的順序。
-
- 在Content Items欄中選擇Workload Characteristics。在Selected Columns列表中點擊"Average Hits per Second"。
- 點擊向下箭頭按鈕直到它移動到Total Transactions Number下面。在報告中,Average Hits per Second這一內容項將會在Total Transactions Number這一內容項后面緊接着顯示。
-
點擊"Generate"按鈕:
之后LoadRunner將會自動收集數據並生成一個Microsoft Word文件,並用Microsoft Word打開。
除了你在分析會話時生成的圖外,報告還包含了一個客觀的結論,以及其他你在創建報告時選擇的部分和圖表。
總結
在這節課中,你學會了最基本的——定義SLA(Service Level Agreement),分析一個場景的運行,以及將你的測試結果發布到報告中。
你已經知道性能上的問題將會在你研究各種顯示服務器瓶頸的圖表后被發現,原因可能是由於負載過重。你已經看到了,你可以通過配置圖表來顯示相關聯的數據,指出這些瓶頸的根源之所在。