姚明菊
(吉利學院,四川 成都610000)
C/S 架構,即客戶端/服務器架構。客戶端一般安裝在Windows 操作系統的客戶端機器上,因此在做性能測試的過程中,除了需要對服務器端進行性能監控外還必須要對Windows 客戶端進行性能監控。本文將重點介紹Windows 客戶端的性能測試和監控工具perfmon;
大數據多維可視化系統,為了能夠獲得很好的圖形的表現能力和運行的速度,大都采用C/S 架構進行開發。Windows 任務管理器等都能很好的進行實時的性能監控, 但是如何將監控的性能歷史數據保存下來,對一段時間的性能趨勢進行分析是個問題。
perfmon 是Windows 自帶的性能監控工具, 提供了圖表化的系統性能實時監視器、性能日志和警報管理,可用于監視CPU 使用率、內存使用率、硬盤讀寫速度、網絡速度等,最重要的是它的計數器可以記錄采集的監控數據并保存,保存的日志數據可以很方便地使用第三方工具對計數器收集的數據進行性能分析。
常用的性能對象與監控指標:
Perfmon 性能監控對象總共有上百個性能指標,關注一個系統的性能時,根據實際情況重點關注對應用系統影響大的CPU、內存(Memory)、磁盤(Disk)、網絡(Network)等幾個關鍵指標。實際上還需要監控程序進程的句柄數Handle Count、進行虛擬內存(Virtual Bytes)、進程的內存總量(Working Set)、進程占用的內存(Private Bytes)等關鍵指標,很多時候單純觀察一個指標不能完全判斷內存泄漏,還需要多個指標結合,甚至結合系統指標來進行分析(表1)。

表1 進程關鍵性能對象與指標
以大數據多維可視化系統客戶端SRE.EXE 性能測試為例,多維可視化展示需要展示實時視頻流、三維模型場景、三維標注等耗費資源的指標和場景,對客戶端的性能影響非常的大,長時間運行的性能數據分析,對提升軟件產品的性能質量非常重要。
選取了一個實際的項目進行超過8*24 小時的穩定性測試,因為本項目并沒有開啟客戶端重啟后自動拉起的功能,不存在進程句柄數Handle Count 改變的情況。所以使用Perfmon 的計數器日志的功能,持續對系統的性能指標采樣,重點監控進程的Virtual Bytes、Working Set 和Private Bytes 指標情況。為了使測試場景更接近真實使用場景,測試指標更加真實和具備說服力,在測試過程中模擬真實使用場景的操作,使用了按鍵精靈錄制了操作腳本,模擬用戶使用操作SRE 系統的場景。
從8*24 小時監控的數據分析來看,SRE 性能指標呈現以下異常點:
第一:在系統運行10 個小時候后,內存有個突變點,經過分析,是因為此前沒有開啟按鍵精靈腳本,也就是系統在沒有操作的空閑狀態下的指標情況,當啟動了按鍵精靈腳本后,系統處于操作狀態,內存有少量上漲,屬于正常的內存占用情況。
第二: 運行8 天過程中, 進程的Virtual Bytes、Working Set 和Private Bytes 指標都在程線性上漲狀態,7 天時間分配的內存上漲了2008M,平均每10h 上漲120M,說明SRE 系統運行過程中存在內存泄漏的情況。

圖1 操作系統為SRE 進程分配的內存量

圖2 進程SRE 占用內存和申請的內存總和量

圖3 進程SRE 使用的虛擬內存的量

圖4 系統CPU 的占用率
第三: 在系統運行大約8*24 小時的時候, 突然出現進程的Virtual Bytes、Working Set 和Private Bytes 幾個指標一致都驟降為0,且此時對應操作系統CPU 的占用量也驟降到0,對應SRE 程序出現黑屏的狀態。經過結合日志詳細分析, 發現在10 月6 日22:42 程序進程卡死, 所以與在此時間點進程各項指標占用驟降為0 的表現是一致的。
SRE 運行過程中占用和使用的內存都程線性上漲,SRE 系統存在較為嚴重的內存泄漏,需要結合指標針對代碼一一進行排查,找出內存泄漏點,并進行優化后,重新測試;
SRE 長期穩定性運行出現程序進程被中斷的現象,需要對應日志和代碼找出進程被中斷的根本點,排查優化后需要重新進行長期穩定性測試。
結合實際大數據多維可視化測試項目開展了C/S 架構性能監控的研究,充分體現出perfmon 在C/S 架構性能測試過程中,不僅能很好的記錄程序運行過程中的各項重要性能指標,還能根據各項性能指標的變化情況得到各項指標的趨勢走向,發現程序的性能異常點,對性能測試提供很好的數據支撐。