使用内存虚拟硬盘 提高ArcGIS server并发性能的一种方法
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 Gigabit Network
1 测试过程
1.1 硬盘读写速度测试
![]() |
使用Ramdisk将1G内存虚拟成硬盘后,得出的数据读写速度截图如下:
虚拟前(普通硬盘)
![]() |
虚拟后(内存虚拟硬盘)
从内存虚拟前后测试硬盘读写速度的数据来看,内存和硬盘的速度相差大约70倍左右。
1.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
1.3 压力测试
由于专业测试软件Load Runner的复杂性,本文使用轻量级测试软件Microsoft Web Application Stress Tool作为压力测试软件。该软件有一个不足的地方,就是只能静态设置一个或者多个测试地址,而不能以一定规则测试某些地址,比如随机选择某行或某列的切片进行测试。本文选取5个固定切片地址作为测试源,500个并发测试1分钟,软件截图如下:
![]() |
通用测试设置
![]() |
内存虚拟盘测试设置
普通硬盘测试设置
1.4
![]() |
测试报告
![]() |
内存虚拟硬盘测试报告
普通硬盘测试报告
2 结论与思考
从以上测试报告可以看出,使用内存虚拟硬盘后,切片服务的平均响应时间由484.33毫秒下降到386.26毫秒。这个结论并不能完全反应出内存虚拟硬盘对服务性能提高的优势,因为内存的读写速度比普通硬盘提高了70倍左右。那么问题出在哪儿呢?
我们先来看下影响ArcGIS server性能架构的一张图:
![]() |
影响ArcGIS server性能的各个环节
由上图可以看出,从浏览器发出请求到接收到数据,需要经过大概6个左右的环节,每个环节都有可能成为性能瓶颈,而GIS Server只是这众多环节中的一个。具体到本文当中,由于测试时选取的切片位置相同(比如每次都请求第8层的102行103列的切片),导致该切片在第一次请求时就已经被加入到了系统缓存(内存)中,以后每次请求都会直接从内存中加载而不会到硬盘上读取,这样,切片源是存放在普通硬盘还是内存虚拟出的硬盘中,就不那么重要了。
如果能够以编程的方式定制测试脚本,精确控制每次并发访问的切片都位于不同的级别和行列,可以预见,就可以得到比较好的结论,比如性能上,内存虚拟硬盘能够比普通硬盘的响应时间提高到70倍左右。
使用内存虚拟硬盘 提高ArcGIS server并发性能的一种方法的更多相关文章
- 读写分离提高 SQL Server 并发性能
以下内容均非原创,仅作学习.分享!! 在 一些大型的网站或者应用中,单台的SQL Server 服务器可能难以支撑非常大的访问压力.很多人在这时候,第一个想到的就是一个解决性能问题的利器——负载均衡. ...
- 修改Linux内核参数提高Nginx服务器并发性能
当linux下Nginx达到并发数很高,TCP TIME_WAIT套接字数量经常达到两.三万,这样服务器很容易被拖死.事实上,我们可以简单的通过修改Linux内核参数,可以减少Nginx服务器 的TI ...
- 性能调优之提高 ASP.NET Web 应用性能的 24 种方法和技巧
性能调优之提高 ASP.NET Web 应用性能的 24 种方法和技巧 poptest是国内唯一一家培养测试开发工程师的培训机构,以学员能胜任自动化测试,性能测试,测试工具开发等工作为目标.如果对 ...
- SQL Server 优化存储过程的七种方法
原文:SQL Server 优化存储过程的七种方法 优化存储过程有很多种方法,下面介绍最常用的7种. 1.使用SET NOCOUNT ON选项 我们使用SELECT语句时,除了返回对应的结果集外,还会 ...
- SQL Server遍历表的几种方法 转载
SQL Server遍历表的几种方法 阅读目录 使用游标 使用表变量 使用临时表 在数据库开发过程中,我们经常会碰到要遍历数据表的情形,一提到遍历表,我们第一印象可能就想到使用游标,使用游标虽然直观易 ...
- ramdisk plus v11.5安装内存虚拟硬盘
ramdisk plus v11.5.桌面版操作及应用图解说明 一.ramdisk plus程序安装方法: 1.先安装英文原版软件(RamDisk-desktop.exe桌面版),安装路径不要更改,安 ...
- 读写分离提高 SQL Server 并发性
转自:http://www.canway.net/Lists/CanwayOriginalArticels/DispForm.aspx?ID=476 在一些大型的网站或者应用中,单台的SQL Serv ...
- Arcgis Server 默认服务端口号修改方法
本人安装Arcgis Server 10.2之后发布了一个地图服务,该服务默认使用的端口号是6080,本人使用的是教育网,使用教育网均能正常使用该服务,但是使用电信或者移动网络均不能正常访问该网站. ...
- 提高HTML5 canvas性能的几种方法
简介 HTML5 canvas 最初起源于苹果(Apple)的一项实验,现在已经成为了web中受到广泛支持的2D快速模式绘图(2Dimmediate mode graphic)的标准.许多开发者现在利 ...
随机推荐
- 虚拟机配置光盘为yum源
很多时候, 我们装系统用的光盘就足够充当我们的软件源了. 但是, 怎么才能配置好让光盘成为yum的软件源, 让yum命令找到这个地方, 从而进行软件的安装. 1. 在虚拟机中把光盘挂载上 挂载上之后, ...
- C# Iterator迭代器的实现方式
C#发展到今天又三种方式实现迭代: 1.非泛型非 yield,这个较简单,代码如下: using System; using System.Collections.Generic; using Sys ...
- 初步理解JNDI
今天初步学习了jndi的基本原理,主要是 学习了收藏中的一篇博文,讲的很好,现在记录一下自己的理解. 其实jndi就和jdbc很相似, 我们希望通过相同的jdbc api来访问不同的数据库,就必须提供 ...
- eclipse 3.6 + tomcat 6.0 开发SSH框架学习
1. 下载JDK 1.6.0.35 http://www.oracle.com/technetwork/java/javase/downloads/index-jsp-138363.html 下载之后 ...
- ubuntu远程桌面连接windows系统(转)
现在用ubuntu系统,公司买了个windows的服务器,需要给配置一套环境,来回跑很麻烦,就想windows下可以的远程桌面,linux应该也有. 现在自己的ubuntu13.10,无法进入桌面的& ...
- MVC结构
MVC结构是其它三个经典的设计模式的演变:观察者模式(Observer)(Pub/Sub), 策略模式(Strategy)和组合模式(Composite). 来自为知笔记(Wiz)
- Xcode8不能使用快捷键“command+/”注释代码的解决方法
sudo /usr/libexec/xpccachectl 打开终端,输入该命令(如果电脑有密码的话,会有提示让输入密码) 接下来重启电脑. command + option + / 还可以多行注释
- MVC后台数据赋值给前端JS对象
Controller中的数据,不管是使用的是ViewModel 还是ViewBag.Data,要将他传递到View中,这个很容易,但是如果要将它传递给JS中的某个对象,这个改如何处理呢? 后台的数据格 ...
- JavaWeb 学习0010-今日问题 2016-12-3
2016-12-3 1. 今天要做的第一个问题就是,怎么把网页变得好看点: addStudent/listStudent页面都有改动 其中 list页面还有了<c:if 的语句这是还没练习过得知 ...
- C#中的线程(一)入门
文章系参考转载,英文原文网址请参考:http://www.albahari.com/threading/ 作者 Joseph Albahari, 翻译 Swanky Wu 中文翻译作者把原文放在了& ...