王永剛
(重慶數字城市科技有限公司,重慶 400020)
網絡地理信息系統(WebGIS)是Web技術與GIS技術相結合的產物,隨著計算機技術和網絡技術的迅猛發展,WebGIS已成為當前GIS應用領域非常重要的一環。當前主流的WebGIS應用以基于HTTP的B/S結構的瘦客戶端模式為主流,用戶只要擁有一臺上網的計算機和瀏覽器,不需要安裝其他客戶端軟件,就可以使用WebGIS帶來的服務。
由于大部分GIS功能都集中在服務器端實現,服務端的性能直接影響用戶的使用體驗,超負荷的用戶量甚至會使服務端崩潰。而WebGIS系統不同于一般的業務系統和網站,具有用戶操作頻繁,停頓思考時間短的特點,服務端壓力也更大。
因此對系統性能的測試與分析,可以了解功能設計是否合理,系統能夠承受的負載,也可以指導服務器配置的優化,滿足大用戶量訪問的需求。
《數字城市車靈通移動定位平臺》是一個典型的WebGIS系統,該系統通過個人手機SIM卡和車輛GPS設備的信號接入,可以即時定位設備的坐標位置,查看一定時間內的移動軌跡,實現個人與車輛的跟蹤定位,系統界面如圖1所示。用戶輸入一個URL地址訪問服務器作為GIS請求,服務器將默認的地圖顯示結果通過網絡返回給客戶端,之后,用戶的每一個操作(如車輛定位、軌跡回放等)都會作為一個新的GIS請求等待服務器響應,以地圖圖片和點位參數形式返回給客戶端展現。系統實現框圖如圖2所示。

圖1 移動定位平臺界面

圖2 系統實現框圖
由于該系統面向社會單位與公眾,具有良好的應用前景,用戶群體不斷增加,在對系統的性能,及能夠承受的并發用戶數不確定的情況下,項目團隊需要探尋系統可能存在的瓶頸,對系統實施性能測試。
性能測試通常包含三個步驟,①生成用戶操作腳本;②模擬批量的用戶執行腳本;③分析性能測試結果。對于WebGIS系統,選用成熟的性能測試工具,能夠良好的運作整個性能測試過程。
LoadRunner是美國Mercury Interactive公司開發的工業級負載測試工具。它是一種適用于各種體系架構的自動負載測試工具,能預測系統行為并優化系統性能。LoadRunner的虛擬用戶引擎(Virtual User Generator)可以生成虛擬用戶,以虛擬用戶的方式來模擬真實用戶的操作行為,并記錄下用戶的業務流程,然后將其轉換為測試腳本。利用虛擬用戶可以同時產生成千上萬用戶訪問。通過模擬用戶操作的行為,我們可以真實地還原WebGIS服務端在不同用戶場景下的性能表現,并提供詳盡的數據以進行分析。
由于性能測試的原理是通過模擬大量用戶對系統服務端進行操作,形成真實的壓力,因此首先確定系統最常用功能和對服務端壓力最大的功能。在本系統中,可以判斷為系統登錄、地圖查看、設備定位、設備軌跡回放四個功能。
使用LoadRunner的Virtual User Generator工具可以直接錄制對系統的操作,形成操作腳本。對錄制的腳本需要進行再編輯,設置參數化,關聯,集合點,合理的思考時間等等,以保證模擬出真實的用戶操作請求效果,通過LoadRunner強大的編輯功能可以簡單實現。以下是腳本中設備軌跡回放的關鍵語句示例,對其中的車輛編號和時間進行參數化,實現了每次模擬都回放的不同車輛在不同時間段的軌跡:

完成腳本制作后,使用LoadRunner的Controller設置運行場景進行壓力模擬。該系統性能測試目標是為了探尋性能瓶頸,因此選用逐級增壓的壓力測試模式,每間隔一段時間增加并發的用戶數量,監測系統和服務器性能的變化,探尋可能的性能瓶頸。設置的運行場景如表1所示。

運行場景設置 表1
場景運行完成后,使用LoadRunner的Analysis對運行結果進行分析。
由功能響應時間(圖3)可以看出,隨著并發用戶數的增加,功能響應時間也逐漸增加,其中在運行到4 min左右,接近100個用戶并發時,響應時間顯著增加,可以判斷此時出現性能拐點。查看服務器資源使用圖(圖4)可以看出,內存使用基本無變化,而CPU使用率持續上升,在 4 min左右已經出現 Processor Queue Length值持續高于2,即CPU存在隊列情況,網絡傳輸量Bytes Total/sec已經達到約9.5 MB/sec,而測試網絡的總帶寬為10 MB自適應。
因此,可以初步判斷,由于系統運行時對網絡傳輸要求很高,CPU花費大量時間用于處理網絡傳輸請求,CPU和網絡帶寬均存在瓶頸。

圖3 并發用戶數&功能響應時間

圖4 服務器資源使用
通過上述測試結果,開發團隊對系統的網絡傳輸內容進行分析,最終發現該系統的軌跡回放功能,在響應客戶端請求時,會一次性將指定時間段內的設備的所有坐標信息傳回客戶端進行回放展現,而時間跨度越大,數據包甚至超過1 MB,導致系統處理能力顯著下降。隨后,對該功能進行了優化處理,實行分段傳坐標數據,解決了此問題。
這只是該項目多次性能測試中的一例,針對項目的不同情況和需求,設計了大量的性能測試方案進行診斷。
本文對一個典型的WebGIS系統,利用性能測試軟件LoadRunner對其性能進行了測試,通過對測試結果分析診斷可能存在的性能問題,避免系統上線后的性能風險。隨著技術的進一步發展和WebGIS更廣泛的應用,在將來的工作中還需要對WebGIS系統的性能優化進行更深入的研究。
[1]陳述彭,魯學軍,周成虎.地理信息系統導論[M].北京:科學出版社,1999
[2]畢建濤.面向網絡共享的地理信息服務研究[D].北京:中國科學院地理科學與資源研究所,2005
[3]鐘大偉.空間信息服務模式及技術研究[D].北京:中國科學院遙感應用研究
[4]段念.軟件性能測試過程詳解與案例剖析[M].北京:清華大學出版社,2006
[5]陳紹英,夏海濤,金成姬.Web性能測試實戰[M].北京:電子工業出版社,2006