使用内存虚拟硬盘 提高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)的标准.许多开发者现在利 ...
随机推荐
- vim编辑器详解
vi(vim)是上Linux非常常用的编辑器,很多Linux发行版都默认安装了vi(vim).vi(vim)命令繁多但是如果使用灵活之后将会大大提高效率. vi是“visual interface”的 ...
- block的初识
block的介绍: Block是iOS4.0之后新增的一种语法结构,也称为“闭包(closure)”. SDK4.0新增的API大量使用了Block. Block是一个匿名的函数代码块,此代码 ...
- 常用的几个DOS批处理
1.启动ORACLE net start OracleServiceQSJBnet start OracleDBConsoleqsjbnet start OracleOraDb10g_home1TNS ...
- Python 监控nginx服务是否正常
Python 监控nginx服务是否正常 #!/usr/bin/env python import os, sys, time from time import strftime while True ...
- redis geo 初探
redis的geo搜索功能是3.2之后新增的,所以实验开始之前先查看redis的版本,确保版本正确. redis的geo多用于地理类应用,所以这次还是用了高德地图API来用作数据源. 首先截取几个点: ...
- C#,委托,匿名委托,Lambda表达式
1. 委托是什么? (1) 从数据结构来讲,委托是和类一样是一种用户自定义类型. (2) 从设计模式来讲,委托(类)提供了方法(对象)的抽象.概括的说:委托是方法的抽象. 2. 委托类型的定义: 委 ...
- oracle分组后取每组第一条数据
数据格式: 分组取第一条的效果: sql语句: SELECT * FROM ( ;
- 【好文要转】HTTP图解(大牛必经之路)
http://www.cnblogs.com/aylin/p/6221436.html
- js获取鼠标当前的位置
有时候,我们需要得到窗口拖动或者鼠标移动的距离,此时可以通过计算鼠标前后在页面中的位置来得到想要的结果,下面介绍几个事件属性: 1.客户区坐标位置 鼠标事件都是在浏览器视口中的特定位置上发生的.这个位 ...
- WCF账户密码认证
记录一下我实现WCF用户认证与权限控制的实现方法, 也让其他网友少走一些弯路. 内容写得非常小白(因为我也是小白嘛), 比较详细, 方便WCF知识基础薄的朋友 主要分为下面几个步骤 作为例子, 创建最 ...






