使用内存虚拟硬盘 提高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)的标准.许多开发者现在利 ...
随机推荐
- 转向Web
一直搞桌面软件开发,用C++绘界面那蛋疼的日子是记忆犹新,也不想钻研什么网络协议了,好好搞Web方面吧,它的开放很让人激动 Python是个好东西,适合许多场合,包括云计算,科学计算,软件测试,运维等 ...
- centos7.2下编译安装&&使用-git代码库
centos7.2下编译安装git Git简介 Git是一个分布式版本控制系统 Git vs SVN SVN是典型的集中式版本控制起,版本库集中存放在服务器,当我们用自己的电脑干活儿的时候,需要先从中 ...
- IOS系列swift语言之课时四
今天我们要讲的主要有:下标.可为空的类型.枚举(特殊的枚举:递归枚举).原生值.关联值 首先来分析一下这个下标,就是说我们可以通过下标找到对应的值或者是改变对应的值. 其次是可为空的类型,我们要牢记所 ...
- Java中的值传递和引用传递
这几天一直再纠结这个问题,今天看了这篇文章有点思路了,这跟C++里函数参数为引用.指针还是有很大区别. 当一个对象被当作参数传递到一个方法后,此方法可改变这个对象的属性,并可返回变化后的结果,那么这里 ...
- error-2016-2-15
错误:该请求包含双重转义序列,而 Web 服务器上配置的请求筛选拒绝双重转义序列原因:一些URL中可能会包含+号等符号,然后IIS7以上的版本会默认拒绝请求此URL,需要进行如下的修改. 解决PHP中 ...
- 分享一个Object.defineProperties 定义一个在原对象可读可写的方法
function A(){ this.name = 'hellow word'; } Object.defineProperties( A.prototype,{ doSomething2 : { v ...
- JS---如何避免用户在请求时“猛击”
var isAjax=false;//是否正在执行ajax请求,此处表示不在拿数据 var getInfoByTrainCode=function () { if(isAjax) return;//如 ...
- Android开发学习---template requires a minimum SDK version of at least 7,build target API version of 14
adt 22.6.3的bug 当adt更新到22.6.3,其编辑器中最低支持api7,即android 2.1,这里可能是google故意这么做的,也可能是其bug.其target sdk 和comp ...
- Oracle Recommended Patches -- "Oracle JavaVM Component Database PSU" (OJVM PSU) Patches (文档 ID 1929745.1)
From: https://support.oracle.com What is "Oracle JavaVM Component Database PSU" ? Oracle J ...
- Java中List,ArrayList、Vector,map,HashTable,HashMap区别用法
Java中List,ArrayList.Vector,map,HashTable,HashMap区别用法 标签: vectorhashmaplistjavaiteratorinteger ArrayL ...