問(wèn)題描述:LoadRunner作為業(yè)界最流行的性能測(cè)試工具,應(yīng)用已經(jīng)十分廣泛。LoadRunner如何分析性能數(shù)據(jù),這個(gè)是每一個(gè)做性能測(cè)試人員都非常關(guān)心的話題。但此話題受具體業(yè)務(wù)和環(huán)境的影響不太好回答,所以縮小一下范圍。如何使用LoadRunner進(jìn)行資源占用率(CPU,內(nèi)存,硬盤(pán))的分析?
精彩答案:
情況比較復(fù)雜,有興趣的話可以就這個(gè)問(wèn)題寫(xiě)本很厚的書(shū)。
1. 系統(tǒng)分類(lèi)
1.1. windows
1.2. unix/linux
2. 核心分類(lèi)
1.1. 單核CPU
1.2. 多核CPU
3. 應(yīng)用分類(lèi)
3.1. java應(yīng)用
3.2. DotNet應(yīng)用
3.3. 其他應(yīng)用
4. 磁盤(pán)分類(lèi)
5. 平臺(tái)分類(lèi)
5.1. 中間件平臺(tái)
5.2. 數(shù)據(jù)庫(kù)平臺(tái)
5.3. 其他中間件平臺(tái)
6. 綜合以上這些內(nèi)容分析,相信會(huì)有很多排列組合。由于參數(shù)組合及應(yīng)用的復(fù)雜性,說(shuō)性能的高低標(biāo)準(zhǔn)實(shí)在很難一概而論。只能就事論事,依照情況分析。
Memory: 內(nèi)存使用情況可能是系統(tǒng)性能中最重要的因素。如果系統(tǒng)“頁(yè)交換”頻繁,說(shuō)明內(nèi)存不足。“頁(yè)交換”是使用稱(chēng)為“頁(yè)面”的單位,將固定大小的代碼和數(shù)據(jù)塊從 RAM 移動(dòng)到磁盤(pán)的過(guò)程,其目的是為了釋放內(nèi)存空間。盡管某些頁(yè)交換使Windows 2000 能夠使用比實(shí)際更多的內(nèi)存,也是可以接受的,但頻繁的頁(yè)交換將降低系統(tǒng)性能。減少頁(yè)交換將顯著提高系統(tǒng)響應(yīng)速度。要監(jiān)視內(nèi)存不足的狀況,請(qǐng)從以下的對(duì)象計(jì)數(shù)器開(kāi)始:
Available Mbytes:可用物理內(nèi)存數(shù). 如果Available Mbytes的值很小(4 MB 或更小),則說(shuō)明計(jì)算機(jī)上總的內(nèi)存可能不足,或某程序沒(méi)有釋放內(nèi)存。
page/sec: 表明由于硬件頁(yè)面錯(cuò)誤而從磁盤(pán)取出的頁(yè)面數(shù),或由于頁(yè)面錯(cuò)誤而寫(xiě)入磁盤(pán)以釋放工作集空間的頁(yè)面數(shù)。一般如果pages/sec持續(xù)高于幾百,那么您應(yīng)該進(jìn)一步研究頁(yè)交換活動(dòng)。有可能需要增加內(nèi)存,以減少換頁(yè)的需求(你可以把這個(gè)數(shù)字乘以4k就得到由此引起的硬盤(pán)數(shù)據(jù)流量)。Pages/sec 的值很大不一定表明內(nèi)存有問(wèn)題,而可能是運(yùn)行使用內(nèi)存映射文件的程序所致。
page read/sec:頁(yè)的硬故障,page/sec的子集,為了解析對(duì)內(nèi)存的引用,必須讀取頁(yè)文件的次數(shù)。閾值為>5. 越低越好。大數(shù)值表示磁盤(pán)讀而不是緩存讀。
由于過(guò)多的頁(yè)交換要使用大量的硬盤(pán)空間,因此有可能將導(dǎo)致將頁(yè)交換內(nèi)存不足與導(dǎo)致頁(yè)交換的磁盤(pán)瓶徑混淆。因此,在研究?jī)?nèi)存不足不太明顯的頁(yè)交換的原因時(shí),您必須跟蹤如下的磁盤(pán)使用情況計(jì)數(shù)器和內(nèi)存計(jì)數(shù)器:
Physical Disk % Disk Time
Physical Disk Avg.Disk Queue Length
例如,包括Page Reads/sec 和% Disk Time 及Avg.Disk Queue Length。如果頁(yè)面讀取操作速率很低,同時(shí)% Disk Time 和Avg.Disk Queue Length的值很高,則可能有磁盤(pán)瓶徑。但是,如果隊(duì)列長(zhǎng)度增加的同時(shí)頁(yè)面讀取速率并未降低,則內(nèi)存不足。
要確定過(guò)多的頁(yè)交換對(duì)磁盤(pán)活動(dòng)的影響,請(qǐng)將Physical Disk Avg.Disk sec/Transfer 和Memory Pages/sec 計(jì)數(shù)器的值增大數(shù)倍。如果這些計(jì)數(shù)器的計(jì)數(shù)結(jié)果超過(guò)了0.1,那么頁(yè)交換將花費(fèi)百分之十以上的磁盤(pán)訪問(wèn)時(shí)間。如果長(zhǎng)時(shí)間發(fā)生這種情況,那么您可能需要更多的內(nèi)存。
Page Faults/sec:每秒軟性頁(yè)面失效的數(shù)目(包括有些可以直接在內(nèi)存中滿(mǎn)足而有些需要從硬盤(pán)讀取)較page/sec只表明數(shù)據(jù)不能在內(nèi)存的指定工作集中立即使用。
Cache Bytes:文件系統(tǒng)緩存(File System Cache),默認(rèn)情況下為50%的可用物理內(nèi)存。如IIS5.0 運(yùn)行內(nèi)存不夠時(shí),它會(huì)自動(dòng)整理緩存。需要關(guān)注該計(jì)數(shù)器的趨勢(shì)變化
如果您懷疑有內(nèi)存泄露,請(qǐng)監(jiān)視Memory Available Bytes 和Memory Committed Bytes,以觀察內(nèi)存行為,并監(jiān)視您認(rèn)為可能在泄露內(nèi)存的進(jìn)程的PRocessPrivate Bytes、ProcessWorking Set 和ProcessHandle Count。如果您懷疑是內(nèi)核模式進(jìn)程導(dǎo)致了泄露,則還應(yīng)該監(jiān)視MemoryPool Nonpaged Bytes、Memory Pool Nonpaged Allocs 和Process(process_name) Pool Nonpaged Bytes。
Pages per second :每秒鐘檢索的頁(yè)數(shù)。該數(shù)字應(yīng)少于每秒一頁(yè)。
Process:
%Processor Time: 被處理器消耗的處理器時(shí)間數(shù)量。如果服務(wù)器 style="COLOR: #000000" href="http://server.it168.com/" target=_blank>服務(wù)器專(zhuān)用于sql server,可接受的最大上限是80-85%
Page Faults/sec:將進(jìn)程產(chǎn)生的頁(yè)故障與系統(tǒng)產(chǎn)生的相比較,以判斷這個(gè)進(jìn)程對(duì)系統(tǒng)頁(yè)故障產(chǎn)生的影響。
Work set: 處理線程最近使用的內(nèi)存頁(yè),反映了每一個(gè)進(jìn)程使用的內(nèi)存頁(yè)的數(shù)量。如果服務(wù)器有足夠的空閑內(nèi)存,頁(yè)就會(huì)被留在工作集中,當(dāng)自由內(nèi)存少于一個(gè)特定的閾值時(shí),頁(yè)就會(huì)被清除出工作集。
Inetinforivate Bytes:此進(jìn)程所分配的無(wú)法與其它進(jìn)程共享的當(dāng)前字節(jié)數(shù)量。如果系統(tǒng)性能隨著時(shí)間而降低,則此計(jì)數(shù)器可以是內(nèi)存泄漏的最佳指示器。
Processor:監(jiān)視“處理器”和“系統(tǒng)”對(duì)象計(jì)數(shù)器可以提供關(guān)于處理器使用的有價(jià)值的信息,幫助您決定是否存在瓶頸。
%Processor Time:如果該值持續(xù)超過(guò)95%,表明瓶頸是CPU。可以考慮增加一個(gè)處理器或換一個(gè)更快的處理器。
%User Time:表示耗費(fèi)CPU的數(shù)據(jù)庫(kù)操作,如排序,執(zhí)行aggregate functions等。如果該值很高,可考慮增加索引,盡量使用簡(jiǎn)單的表聯(lián)接,水平分割大表格等方法來(lái)降低該值。
%Privileged Time:(CPU內(nèi)核時(shí)間)是在特權(quán)模式下處理線程執(zhí)行代碼所花時(shí)間的百分比。如果該參數(shù)值和"hysical Disk"參數(shù)值一直很高,表明I/O有問(wèn)題??煽紤]更換更快的硬盤(pán)系統(tǒng)。另外設(shè)置Tempdb in RAM,減低"max async IO","max lazy writer IO"等措施都會(huì)降低該值。
此外,跟蹤計(jì)算機(jī)的服務(wù)器工作隊(duì)列當(dāng)前長(zhǎng)度的Server Work Queues Queue Length 計(jì)數(shù)器會(huì)顯示出處理器瓶頸。隊(duì)列長(zhǎng)度持續(xù)大于4 則表示可能出現(xiàn)處理器擁塞。此計(jì)數(shù)器是特定時(shí)間的值,而不是一段時(shí)間的平均值。
% DPC Time:越低越好。在多處理器系統(tǒng)中,如果這個(gè)值大于50%并且Processor:% Processor Time非常高,加入一個(gè)網(wǎng)卡可能會(huì)提高性能,提供的網(wǎng)絡(luò)已經(jīng)不飽和。
Thread
ContextSwitches/sec: (實(shí)例化inetinfo 和dllhost 進(jìn)程) 如果你決定要增加線程字節(jié)池的大小,你應(yīng)該監(jiān)視這三個(gè)計(jì)數(shù)器(包括上面的一個(gè))。增加線程數(shù)可能會(huì)增加上下文切換次數(shù),這樣性能不會(huì)上升反而會(huì)下降。如果十個(gè)實(shí)例的上下文切換值非常高,就應(yīng)該減小線程字節(jié)池的大小。
Physical Disk:
%Disk Time %:指所選磁盤(pán)驅(qū)動(dòng)器忙于為讀或?qū)懭胝?qǐng)求提供服務(wù)所用的時(shí)間的百分比。
如果三個(gè)計(jì)數(shù)器都比較大,那么硬盤(pán)不是瓶頸。如果只有%Disk Time比較大,另外兩個(gè)都比較適中,硬盤(pán)可能會(huì)是瓶頸。在記錄該計(jì)數(shù)器之前,請(qǐng)?jiān)赪indows 2000 的命令行窗口中運(yùn)行diskperf -yD。若數(shù)值持續(xù)超過(guò)80%,則可能是內(nèi)存泄漏。
Avg.Disk Queue Length:指讀取和寫(xiě)入請(qǐng)求(為所選磁盤(pán)在實(shí)例間隔中列隊(duì)的)的平均數(shù)。該值應(yīng)不超過(guò)磁盤(pán)數(shù)的1.5~2 倍。要提高性能,可增加磁盤(pán)。注意:一個(gè)Raid Disk實(shí)際有多個(gè)磁盤(pán)。
Average Disk Read/Write Queue Length:指讀取(寫(xiě)入)請(qǐng)求(列隊(duì))的平均數(shù)。
Disk Reads(Writes)/s: 物理磁盤(pán)上每秒鐘磁盤(pán)讀、寫(xiě)的次數(shù)。兩者相加,應(yīng)小于磁盤(pán)設(shè)備最大容量。
Average Disksec/Read: 指以秒計(jì)算的在此盤(pán)上讀取數(shù)據(jù)的所需平均時(shí)間。
Average Disk sec/Transfer:指以秒計(jì)算的在此盤(pán)上寫(xiě)入數(shù)據(jù)的所需平均時(shí)間。
Network Interface:
Bytes Total/sec :為發(fā)送和接收字節(jié)的速率,包括幀字符在內(nèi)。判斷網(wǎng)絡(luò)連接速度是否是瓶頸,可以用該計(jì)數(shù)器的值和目前網(wǎng)絡(luò)的帶寬比較。
新聞熱點(diǎn)
疑難解答
圖片精選