使用內存虛擬硬盤提高ArcGIS server
併發性能的一種方法
wy
1 問題提出
1.1 概述
提高ArcGIS server併發性能的方法很多,本文討論在用戶硬件足夠強大的情況下(主要是內存足夠大),使用內存模擬硬盤來提高數據的讀取效率,以達到提高ArcGIS server併發性能的目的。
1.2 總體思路
爲了提高ArcGIS server併發性能,在假定其他條件都相同的前提下,使用Ramdisk軟件,將系統中的內存模擬成硬盤使用,然後將ArcGIS server中發佈2個相同的切片服務,其中一個服務的切片遷移至內存盤(即Ramdisk),另外一個服務切片存放位置不變(爲普通硬盤),然後在客戶端使用壓力測試軟件測試2個服務的併發性能,最終得出測試結論。
2 環境搭建
2.1 軟件環境
軟件名稱 |
版本號 |
用途 |
ArcGIS |
10.1 |
平臺測試,包括server和桌面 |
Windows 2008 |
R2(64位) |
操作系統 |
Ramdisk 64 |
1.6 (64位) |
內存虛擬硬盤軟件 |
Crystal Disk Mark |
3.0.1(64位) |
硬盤速度測試軟件 |
Microsoft Web Application Stress Tool |
1.1.293.1 |
壓力測試軟件 |
2.2 硬件環境
硬件類別 |
規格 |
CPU |
Intel(R) Core(TM) i7 CPU 1.73GHz (8 CPUs) |
內存 |
8G |
硬盤 |
Hitachi HTS725050A9A364 ATA Device 500G,7200轉 |
顯卡 |
NVIDIA Quadro FX 880M |
2.3 網絡環境
Intel(R) 82577LM GigabitNetwork
3 測試過程
3.1 硬盤讀寫速度測試
使用Ramdisk將1G內存虛擬成硬盤後,得出的數據讀寫速度截圖如下:
虛擬前(普通硬盤)
虛擬後(內存虛擬硬盤)
從內存虛擬前後測試硬盤讀寫速度的數據來看,內存和硬盤的速度相差大約70倍左右。
3.2 發佈切片服務
下面我們使用arcgis server發佈2個切片服務,這2個服務除了切片放置的位置不同(一個放在普通硬盤,一個放在內存虛擬的硬盤上),其他都一樣。這樣我們得到了這2個服務的地址:
http://192.168.32.153:6080/arcgis/rest/services/wychinaRam/MapServer
http://192.168.32.153:6080/arcgis/rest/services/tile/wychinaT/MapServer
3.3 壓力測試
由於專業測試軟件Load Runner的複雜性,本文使用輕量級測試軟件Microsoft Web Application Stress Tool作爲壓力測試軟件。該軟件有一個不足的地方,就是隻能靜態設置一個或者多個測試地址,而不能以一定規則測試某些地址,比如隨機選擇某行或某列的切片進行測試。本文選取5個固定切片地址作爲測試源,500個併發測試1分鐘,軟件截圖如下:
內存虛擬盤測試設置
普通硬盤測試設置
3.4
測試報告
內存虛擬硬盤測試報告
普通硬盤測試報告
4 結論與思考
從以上測試報告可以看出,使用內存虛擬硬盤後,切片服務的平均響應時間由484.33毫秒下降到386.26毫秒。這個結論並不能完全反應出內存虛擬硬盤對服務性能提高的優勢,因爲內存的讀寫速度比普通硬盤提高了70倍左右。那麼問題出在哪兒呢?
我們先來看下影響ArcGIS server性能架構的一張圖:
影響ArcGIS server性能的各個環節
由上圖可以看出,從瀏覽器發出請求到接收到數據,需要經過大概6個左右的環節,每個環節都有可能成爲性能瓶頸,而GISServer只是這衆多環節中的一個。具體到本文當中,由於測試時選取的切片位置相同(比如每次都請求第8層的102行103列的切片),導致該切片在第一次請求時就已經被加入到了系統緩存(內存)中,以後每次請求都會直接從內存中加載而不會到硬盤上讀取,這樣,切片源是存放在普通硬盤還是內存虛擬出的硬盤中,就不那麼重要了。
如果能夠以編程的方式定製測試腳本,精確控制每次併發訪問的切片都位於不同的級別和行列,可以預見,就可以得到比較好的結論,比如性能上,內存虛擬硬盤能夠比普通硬盤的響應時間提高到70倍左右。