姚明菊
(吉利學(xué)院,四川 成都610000)
C/S 架構(gòu),即客戶端/服務(wù)器架構(gòu)。客戶端一般安裝在Windows 操作系統(tǒng)的客戶端機器上,因此在做性能測試的過程中,除了需要對服務(wù)器端進行性能監(jiān)控外還必須要對Windows 客戶端進行性能監(jiān)控。本文將重點介紹Windows 客戶端的性能測試和監(jiān)控工具perfmon;
大數(shù)據(jù)多維可視化系統(tǒng),為了能夠獲得很好的圖形的表現(xiàn)能力和運行的速度,大都采用C/S 架構(gòu)進行開發(fā)。Windows 任務(wù)管理器等都能很好的進行實時的性能監(jiān)控, 但是如何將監(jiān)控的性能歷史數(shù)據(jù)保存下來,對一段時間的性能趨勢進行分析是個問題。
perfmon 是Windows 自帶的性能監(jiān)控工具, 提供了圖表化的系統(tǒng)性能實時監(jiān)視器、性能日志和警報管理,可用于監(jiān)視CPU 使用率、內(nèi)存使用率、硬盤讀寫速度、網(wǎng)絡(luò)速度等,最重要的是它的計數(shù)器可以記錄采集的監(jiān)控數(shù)據(jù)并保存,保存的日志數(shù)據(jù)可以很方便地使用第三方工具對計數(shù)器收集的數(shù)據(jù)進行性能分析。
常用的性能對象與監(jiān)控指標:
Perfmon 性能監(jiān)控對象總共有上百個性能指標,關(guān)注一個系統(tǒng)的性能時,根據(jù)實際情況重點關(guān)注對應(yīng)用系統(tǒng)影響大的CPU、內(nèi)存(Memory)、磁盤(Disk)、網(wǎng)絡(luò)(Network)等幾個關(guān)鍵指標。實際上還需要監(jiān)控程序進程的句柄數(shù)Handle Count、進行虛擬內(nèi)存(Virtual Bytes)、進程的內(nèi)存總量(Working Set)、進程占用的內(nèi)存(Private Bytes)等關(guān)鍵指標,很多時候單純觀察一個指標不能完全判斷內(nèi)存泄漏,還需要多個指標結(jié)合,甚至結(jié)合系統(tǒng)指標來進行分析(表1)。
表1 進程關(guān)鍵性能對象與指標
以大數(shù)據(jù)多維可視化系統(tǒng)客戶端SRE.EXE 性能測試為例,多維可視化展示需要展示實時視頻流、三維模型場景、三維標注等耗費資源的指標和場景,對客戶端的性能影響非常的大,長時間運行的性能數(shù)據(jù)分析,對提升軟件產(chǎn)品的性能質(zhì)量非常重要。
選取了一個實際的項目進行超過8*24 小時的穩(wěn)定性測試,因為本項目并沒有開啟客戶端重啟后自動拉起的功能,不存在進程句柄數(shù)Handle Count 改變的情況。所以使用Perfmon 的計數(shù)器日志的功能,持續(xù)對系統(tǒng)的性能指標采樣,重點監(jiān)控進程的Virtual Bytes、Working Set 和Private Bytes 指標情況。為了使測試場景更接近真實使用場景,測試指標更加真實和具備說服力,在測試過程中模擬真實使用場景的操作,使用了按鍵精靈錄制了操作腳本,模擬用戶使用操作SRE 系統(tǒng)的場景。
從8*24 小時監(jiān)控的數(shù)據(jù)分析來看,SRE 性能指標呈現(xiàn)以下異常點:
第一:在系統(tǒng)運行10 個小時候后,內(nèi)存有個突變點,經(jīng)過分析,是因為此前沒有開啟按鍵精靈腳本,也就是系統(tǒng)在沒有操作的空閑狀態(tài)下的指標情況,當啟動了按鍵精靈腳本后,系統(tǒng)處于操作狀態(tài),內(nèi)存有少量上漲,屬于正常的內(nèi)存占用情況。
第二: 運行8 天過程中, 進程的Virtual Bytes、Working Set 和Private Bytes 指標都在程線性上漲狀態(tài),7 天時間分配的內(nèi)存上漲了2008M,平均每10h 上漲120M,說明SRE 系統(tǒng)運行過程中存在內(nèi)存泄漏的情況。
圖1 操作系統(tǒng)為SRE 進程分配的內(nèi)存量
圖2 進程SRE 占用內(nèi)存和申請的內(nèi)存總和量
圖3 進程SRE 使用的虛擬內(nèi)存的量
圖4 系統(tǒng)CPU 的占用率
第三: 在系統(tǒng)運行大約8*24 小時的時候, 突然出現(xiàn)進程的Virtual Bytes、Working Set 和Private Bytes 幾個指標一致都驟降為0,且此時對應(yīng)操作系統(tǒng)CPU 的占用量也驟降到0,對應(yīng)SRE 程序出現(xiàn)黑屏的狀態(tài)。經(jīng)過結(jié)合日志詳細分析, 發(fā)現(xiàn)在10 月6 日22:42 程序進程卡死, 所以與在此時間點進程各項指標占用驟降為0 的表現(xiàn)是一致的。
SRE 運行過程中占用和使用的內(nèi)存都程線性上漲,SRE 系統(tǒng)存在較為嚴重的內(nèi)存泄漏,需要結(jié)合指標針對代碼一一進行排查,找出內(nèi)存泄漏點,并進行優(yōu)化后,重新測試;
SRE 長期穩(wěn)定性運行出現(xiàn)程序進程被中斷的現(xiàn)象,需要對應(yīng)日志和代碼找出進程被中斷的根本點,排查優(yōu)化后需要重新進行長期穩(wěn)定性測試。
結(jié)合實際大數(shù)據(jù)多維可視化測試項目開展了C/S 架構(gòu)性能監(jiān)控的研究,充分體現(xiàn)出perfmon 在C/S 架構(gòu)性能測試過程中,不僅能很好的記錄程序運行過程中的各項重要性能指標,還能根據(jù)各項性能指標的變化情況得到各項指標的趨勢走向,發(fā)現(xiàn)程序的性能異常點,對性能測試提供很好的數(shù)據(jù)支撐。