`
GuMuTian
  • 浏览: 14484 次
社区版块
存档分类
最新评论

ArcGIS Server 优化方案及混合应用两种模式的缓存

阅读更多

名词解释及翻译:

Instances (In Use/Running) 实例的使用状态。 In Use 代表正在使用中的实例数。 Running 代表已经创建的实例数。

Minimum number of instances 最小实例个数。

Maximum number of instances 最大实例个数。

The maximum time a client will wait to get a service 客户端等待获取服务的最大时间。

 

首先,简单介绍一下 ArcGIS 池化与非池化服务的原理。 ArcGIS ADF 框架在使用池化服务时,只是在程序需要的时候在实例池中获取一个实例,此时 In Use 1 。使用完毕后立即释放回实例池(注意是释放而不是关闭),等待下一次被再次重用,此时 In Use 1 。这就是为什么池化实例一经创建就不会减少的原因。这中间并没有创建以及关闭实例的过程( Running 的数目不变),因此池化服务相对于非池化服务而言使用效率是很高的。

1

       而在使用非池化服务时,则是在浏览器会话开始时创建一个实例,此时 In Use Running 各加 1 。而在浏览器会话结束后关闭实例,此时 In Use Running 各减 1 。因此,非池化服务在长时间闲置的情况下实例数( Running )会减少,而池化服务只会释放回实例池,而不会真正减少实例数。

2

那么是否池化服务的实例数( Running )就不会增加了呢?当然不是了,只不过在一般情况下你先后打开两次地图是无法增加实例个数的。那么什么时候才会增加呢?答案就是在并发的情况下才会增加实例数。

通常情况下啊,如果我们先后打开两次地图。在第一次打开地图,并获取地图的时候, ADF 会从实例池获取一个实例,此时 In Use 1 ,等到地图在浏览器中显示完成后, ADF 马上释放实例回实例池,此时 In Use 1 。由于池化服务的高性能,从获取实例到释放实例通常只需要 1 秒左右。因此在大多数时候当我们去看池化服务的 In Use 时总是显示为 0 。而非池化服务就不同了,只要在你会话有效期内 In Use 总是不为 0 的。接下来,当我们第二次打开地图的时候,由于之前使用过的实例已经被释放回实例池了,因此在第二次获取实例的时候 ADF 又重用了之前的实例。所以新的实例并不需要被创建( Running 不变),只需要重用即可。

但是在并发的情况下就不同了。如果同时有两个或多个请求打开地图,当实例池中实例数( Running )不够时, ArcGIS 才会创建一个新的实例,此时 In Use Running 各加 1

讲了那么多,现在来讲讲如何优化吧!

1. 针对池化服务实例数只能增加无法减少的情况进行优化

通常在设置池化服务时,都有 Minimum number of instances Maximum number of instances 两个设置项。 ESRI 公司的建议是前者设置为 1 而后者设置为系统的最大并发数。但我不认为只是最好的设置方式。如果最大实例数设置为系统的最大并发数,或许可以解决问题。但是由于池化服务实例数只增不减的特性,一旦某一时刻并发达到最大值,则实例池中的实例数同时也会达到这一个最大值。但是系统的并发量并不总是维持在最大并发量,大多时候都是远远小于最大并发值。因此这会导致大量闲置的实例。同时,由于最小实例数设置为 1 ,则每次当实例不够用时 ArcGIS 都需要反复创建实例,这对性能以及客户体验的影响是很大的。

因此,我的建议是把最小值与最大值设为同样的值,并且该值小于系统最大并发数。至于该值该如何设置需要通过多次测试以达到最佳性能为宜。同时,要适当增大 The maximum time a client will wait to get a service 的值。该值的意思就是当并发数大于最大实例数时,系统等待多久以重用被释放回实例池的实例。

2. 针对非池化服务的实例无法及时关闭的情况进行优化

非池化服务在长时间闲置的情况下会自动关闭。但是这里究竟需要闲置多久才关闭。我没有找到相应的说明。总之默认情况下的结果是我们所不能接受的。这就需要我们自己动手了。具体的做法可以有很多,这里我就讲一下原理:

在地图初始化之后,把实例的相关信息发送到服务器端保存起来。然后在客户端通过 Ajax 每过一定时间就发送一个实例保持的信号,服务器端单独开一个线程来检查信号。由于 Ajax 是客户端代码,依赖于浏览器执行。因此如果一个实例对应的信号在 3 个周期之后仍旧没有发送到服务器端。则认为相应的浏览器页面已经被关闭,此时可手动关闭该实例。

3. 针对一个应用混合多个地图服务的情况进行优化

在项目实际应用中,单一的地图服务通常是不够用的。以下图为例,下图所示系统共使用 4 个地图服务,四个地图服务以如下顺序叠加产生地图:


3

多个地图服务叠加生成地图,这虽然带来一定得灵活性,但这是以牺牲性能为代价换来的,在一般的应用中,性能往往是我们更关注的。那么有没有方法可以鱼和熊掌兼得呢?正规的方法是不行的,那只有用非正规的方法。

在介绍我的方法前,先来了解一下 ArcGIS 的缓存。 ArcGIS 的缓存分两种,一种是融合所有图层的缓存生成方式,我称之为融合模式。另一种是将各图层分离单独生成多个图层缓存的方式,我称之为多层模式。融合模式的好处是速度快,但是缺点也同样明显——无法动态更新图片,因此所有涉及到得添加,删除或者显示 / 隐藏图层都无法在融合模式上表现出来。多层模式可以选择需要制作缓存的图层。在显示地图的时候,通过把各个已生成缓存的图层的图片和动态绘制的未生成缓存的图层的要素相叠加,生成一张图片。此模式在已生成缓存的图层和未生成缓存的图层都不多的情况下,性能较好。反之,则性能很差。

下面就开始介绍我的方法:

1) 首先把图 1 中地图服务 2 和地图服务 4 以融合模式分别生成缓存。

2) 新建一个 MXD 文件,把地图服务 1 所涉及的图层全都加入该 MXD 的图层列表。

3) MXD 中随意加入一个图层到图层列表的最底端,选择图层状态为可视,并且不设置任何显示级别。

4) 把地图服务 3 所涉及的图层全部加入 MXD 图层列表的最低端。

5) 重复步骤 3

6) 以该 MXD 建立地图服务 5 ,并以多层模式生成步骤 3 以及步骤 5 中两个图层的缓存。

7)  找到 ArcGIS 缓存存放目录。该目录下共有三个地图服务所生成的缓存,分别以地图服务 2 、地图服务 4 以及地图服务 5 的名称命名。打开地图服务 5 的缓存目录,找到以步骤 3 中图层名称命名的文件夹,把在步骤 1 中生成的地图服务 2 的缓存拷贝、覆盖到该目录。

8) 同上,找到以步骤 5 中图层名称命名的文件夹,把在步骤 1 中生成的地图服务 4 的缓存拷贝、覆盖到该目录。

至此,混合了融合模式和多层模式的地图缓存就算建立完成了。打开地图查看一下效果是不是和原来的一样!上面的方法从原理上还是多层模式的缓存机制,只不过采用之前生成的融合后的缓存图片替换了单一图层的缓存图片。而 ArcGIS 并不知道图片已经被替换,仍旧会按照预定的方式把缓存叠加到最终生成的地图中去,这正好被我们利用。使用此方法生成的地图服务理论上的性能至少不会差于多个地图服务混合的方式,但究竟性能如何还有待实践证明。

至此,我关于 ArcGIS 的优化方案都介绍完毕了。如果大家还有其他优化方案的话也欢迎提出来大家一起讨论一下。

  • 大小: 4 KB
  • 大小: 4.1 KB
  • 大小: 8.5 KB
1
0
分享到:
评论

相关推荐

    WebGIS考试参考试题.docx

    - **解析:** 数字化过程可以分为手扶跟踪数字化和扫描数字化两种方式。前者是手动追踪地图等图形材料来创建数字版本;后者则是通过扫描仪等设备将纸质地图转换成数字格式。 6. **发布GIS资源的方式** - **解析:**...

    WebGIS考试参考试题 (1).docx

    - **混合式**:结合前两种模式的优点,根据实际情况动态分配计算任务。 #### 3. WWW的三大基本技术 - **HTTP**(HyperText Transfer Protocol):超文本传输协议,用于从Web服务器传输超文本到本地浏览器的传输协议...

    TinyYolo2实时视频流物体检测ONNX模型

    TinyYolo2实时视频流物体检测ONNX模型 运行 ONNX 模型,并结合 OpenCV 进行图像处理。具体流程包括: 1. 加载并初始化 ONNX 模型。 2. 从摄像头捕获实时视频流。 3. 对每一帧图像进行模型推理,生成物体检测结果。 4. 在界面上绘制检测结果的边界框和标签。

    chromedriver-linux64-134.0.6998.23(Beta).zip

    chromedriver-linux64-134.0.6998.23(Beta).zip

    Web开发:ABP框架4-DDD四层架构的详解

    Web开发:ABP框架4-DDD四层架构的详解

    chromedriver-linux64-135.0.7029.0(Canary).zip

    chromedriver-linux64-135.0.7029.0(Canary).zip

    (参考项目)MATLAB人脸门禁系统.zip

    实现人脸识别的考勤门禁系统可以分为以下步骤: 1. 采集人脸图像数据集:首先需要采集员工的人脸图像数据集,包括正面、侧面等多个角度的图像。可以使用MATLAB中的图像采集工具或者第三方库进行采集。 2. 预处理人脸图像数据:对采集到的人脸图像数据进行预处理,包括人脸检测、人脸对齐、人脸裁剪等操作。MATLAB提供了相关的图像处理工具箱,可以用于实现这些处理步骤。 3. 特征提取与特征匹配:使用人脸识别算法提取人脸图像的特征,比如使用人脸识别中常用的特征提取算法如Eigenfaces、Fisherfaces或者基于深度学习的算法。然后将员工的人脸数据与数据库中的人脸数据进行匹配,判断是否为注册员工。 4. 考勤记录与门禁控制:如果人脸匹配成功,系统可以记录员工的考勤时间,并且控制门禁系统进行开启。MATLAB可以与外部设备进行通信,实现门禁控制以及考勤记录功能。

    rdtyfv、ijij

    yugy

    企业IT治理体系规划.pptx

    企业IT治理体系规划.pptx

    基于Nutz、SSH、SSM的新闻管理系统.zip(毕设&课设&实训&大作业&竞赛&项目)

    项目工程资源经过严格测试运行并且功能上ok,可实现复现复刻,拿到资料包后可实现复现出一样的项目,本人系统开发经验充足(全栈全领域),有任何使用问题欢迎随时与我联系,我会抽时间努力为您解惑,提供帮助 【资源内容】:包含源码+工程文件+说明等。答辩评审平均分达到96分,放心下载使用!可实现复现;设计报告也可借鉴此项目;该资源内项目代码都经过测试运行,功能ok 【项目价值】:可用在相关项目设计中,皆可应用在项目、毕业设计、课程设计、期末/期中/大作业、工程实训、大创等学科竞赛比赛、初期项目立项、学习/练手等方面,可借鉴此优质项目实现复刻,设计报告也可借鉴此项目,也可基于此项目来扩展开发出更多功能 【提供帮助】:有任何使用上的问题欢迎随时与我联系,抽时间努力解答解惑,提供帮助 【附带帮助】:若还需要相关开发工具、学习资料等,我会提供帮助,提供资料,鼓励学习进步 下载后请首先打开说明文件(如有);整理时不同项目所包含资源内容不同;项目工程可实现复现复刻,如果基础还行,也可在此程序基础上进行修改,以实现其它功能。供开源学习/技术交流/学习参考,勿用于商业用途。质量优质,放心下载使用

    基于多目标粒子群算法的冷热电联供综合能源系统优化调度与运行策略分析,基于多目标粒子群算法的冷热电联供综合能源系统优化调度与运行策略分析,MATLAB代码:基于多目标粒子群算法冷热电联供综合能源系统运行

    基于多目标粒子群算法的冷热电联供综合能源系统优化调度与运行策略分析,基于多目标粒子群算法的冷热电联供综合能源系统优化调度与运行策略分析,MATLAB代码:基于多目标粒子群算法冷热电联供综合能源系统运行优化 关键词:综合能源 冷热电三联供 粒子群算法 多目标优化 参考文档:《基于多目标算法的冷热电联供型综合能源系统运行优化》 仿真平台:MATLAB 平台采用粒子群实现求解 优势:代码注释详实,适合参考学习,非目前烂大街的版本,程序非常精品,请仔细辨识 主要内容:代码构建了含冷、热、电负荷的冷热电联供型综合能源系统优化调度模型,考虑了燃气轮机、电制冷机、锅炉以及风光机组等资源,并且考虑与上级电网的购电交易,综合考虑了用户购电购热冷量的成本、CCHP收益以及成本等各种因素,从而实现CCHP系统的经济运行,求解采用的是MOPSO算法(多目标粒子群算法),求解效果极佳,具体可以看图 ,核心关键词: 综合能源系统; 冷热电三联供; 粒子群算法; 多目标优化; MOPSO算法; 优化调度模型; 燃气轮机; 电制冷机; 锅炉; 风光机组; 上级电网购售电交易。,基于多目标粒子群算法的CCHP综合

    DSP28379D串口升级方案:单核双核升级与Boot优化,C#上位机开发串口通信方案,DSP28379D串口升级方案:单核双核升级与Boot优化,C#上位机开发实现串口通信,DSP28379D串口升

    DSP28379D串口升级方案:单核双核升级与Boot优化,C#上位机开发串口通信方案,DSP28379D串口升级方案:单核双核升级与Boot优化,C#上位机开发实现串口通信,DSP28379D串口升级方案 单核双核升级,boot升级,串口方案。 上位机用c#开发。 ,DSP28379D; 串口升级方案; 单核双核升级; boot升级; 上位机C#开发,DSP28379D串口双核升级方案:Boot串口升级技术使用C#上位机开发

    基于ASP.NET MVC+三层架构和EntityFramework的微博门户网站项目.zip(毕设&课设&实训&大作业&竞赛&项目)

    项目工程资源经过严格测试运行并且功能上ok,可实现复现复刻,拿到资料包后可实现复现出一样的项目,本人系统开发经验充足(全栈全领域),有任何使用问题欢迎随时与我联系,我会抽时间努力为您解惑,提供帮助 【资源内容】:包含源码+工程文件+说明等。答辩评审平均分达到96分,放心下载使用!可实现复现;设计报告也可借鉴此项目;该资源内项目代码都经过测试运行,功能ok 【项目价值】:可用在相关项目设计中,皆可应用在项目、毕业设计、课程设计、期末/期中/大作业、工程实训、大创等学科竞赛比赛、初期项目立项、学习/练手等方面,可借鉴此优质项目实现复刻,设计报告也可借鉴此项目,也可基于此项目来扩展开发出更多功能 【提供帮助】:有任何使用上的问题欢迎随时与我联系,抽时间努力解答解惑,提供帮助 【附带帮助】:若还需要相关开发工具、学习资料等,我会提供帮助,提供资料,鼓励学习进步 下载后请首先打开说明文件(如有);整理时不同项目所包含资源内容不同;项目工程可实现复现复刻,如果基础还行,也可在此程序基础上进行修改,以实现其它功能。供开源学习/技术交流/学习参考,勿用于商业用途。质量优质,放心下载使用

    基于PLC的双层自动门控制:光电传感触发,有序开关与延时功能实现,附程序、画面及参考文档 ,基于PLC的双层自动门控制系统:精准控制,保障无尘环境;门间联动,智能安防新体验 ,基于plc的双层自动门控

    基于PLC的双层自动门控制:光电传感触发,有序开关与延时功能实现,附程序、画面及参考文档。,基于PLC的双层自动门控制系统:精准控制,保障无尘环境;门间联动,智能安防新体验。,基于plc的双层自动门控制系统,全部采用博途仿真完成,提供程序,画面,参考文档,详情见图。 实现功能(详见上方演示视频): ① 某房间要求尽可能地保持无尘,在通道上设置了两道电动门,门1和门2,可通过光电传感器自动完成门的打开和关闭。 门1和门2 不能同时打开。 ② 第 1 道门(根据出入方向不同,可能是门 1 或门 2),是由在通道外的开门者通过按开门按钮打开的,而第 2 道门(根据出入方向不同,可能是门 1 或门 2 )则是在打开的第 1 道门关闭后自动地打开的(也可以由通道内的人按开门按钮来打开第2 道门)。 这两道门都是在门开后,经过 3s 的延时而自动关闭的。 ③ 在门关闭期间,如果对应的光电传感器的信号被遮断,则门立即自动打开。 如果在门外或者在门内的开门者按对应的开门按钮时,立即打开。 ④ 出于安全方面的考虑,如果在通道内的某个人经过光电传感器时,对应的门已经打开,则通道外的开门者可以不按开门按钮。

    黑马程序员Java品达通用权限项目,基于SpringCloud SpringBoot 的微服务框架的权限管理解决方案.zip

    项目工程资源经过严格测试运行并且功能上ok,可实现复现复刻,拿到资料包后可实现复现出一样的项目,本人系统开发经验充足(全栈全领域),有任何使用问题欢迎随时与我联系,我会抽时间努力为您解惑,提供帮助 【资源内容】:包含源码+工程文件+说明等。答辩评审平均分达到96分,放心下载使用!可实现复现;设计报告也可借鉴此项目;该资源内项目代码都经过测试运行,功能ok 【项目价值】:可用在相关项目设计中,皆可应用在项目、毕业设计、课程设计、期末/期中/大作业、工程实训、大创等学科竞赛比赛、初期项目立项、学习/练手等方面,可借鉴此优质项目实现复刻,设计报告也可借鉴此项目,也可基于此项目来扩展开发出更多功能 【提供帮助】:有任何使用上的问题欢迎随时与我联系,抽时间努力解答解惑,提供帮助 【附带帮助】:若还需要相关开发工具、学习资料等,我会提供帮助,提供资料,鼓励学习进步 下载后请首先打开说明文件(如有);整理时不同项目所包含资源内容不同;项目工程可实现复现复刻,如果基础还行,也可在此程序基础上进行修改,以实现其它功能。供开源学习/技术交流/学习参考,勿用于商业用途。质量优质,放心下载使用

    DeepSeek+DeepResearch-让科研像聊天一样简单

    DeepSeek+DeepResearch——让科研像聊天一样简单 (1)DeepSeek如何做数据分析? (2)DeepSeek如何分析文件内容? (3)DeepSeek如何进行数据挖掘? (4)DeepSeek如何进行科学研究? (5)DeepSeek如何写综述? (6)DeepSeek如何进行数据可视化? (7)DeepSeek如何写作润色? (8)DeepSeek如何中英文互译? (9)DeepSeek如何做降重? (10)DeepSeek论文参考文献指令 (11)DeepSeek基础知识。

    基于springboot+uniapp实现的蛋糕商城小程序.zip(毕设&课设&实训&大作业&竞赛&项目)

    项目工程资源经过严格测试运行并且功能上ok,可实现复现复刻,拿到资料包后可实现复现出一样的项目,本人系统开发经验充足(全栈全领域),有任何使用问题欢迎随时与我联系,我会抽时间努力为您解惑,提供帮助 【资源内容】:包含源码+工程文件+说明等。答辩评审平均分达到96分,放心下载使用!可实现复现;设计报告也可借鉴此项目;该资源内项目代码都经过测试运行,功能ok 【项目价值】:可用在相关项目设计中,皆可应用在项目、毕业设计、课程设计、期末/期中/大作业、工程实训、大创等学科竞赛比赛、初期项目立项、学习/练手等方面,可借鉴此优质项目实现复刻,设计报告也可借鉴此项目,也可基于此项目来扩展开发出更多功能 【提供帮助】:有任何使用上的问题欢迎随时与我联系,抽时间努力解答解惑,提供帮助 【附带帮助】:若还需要相关开发工具、学习资料等,我会提供帮助,提供资料,鼓励学习进步 下载后请首先打开说明文件(如有);整理时不同项目所包含资源内容不同;项目工程可实现复现复刻,如果基础还行,也可在此程序基础上进行修改,以实现其它功能。供开源学习/技术交流/学习参考,勿用于商业用途。质量优质,放心下载使用

    jdepend-demo-2.9.1-10.el7.x64-86.rpm.tar.gz

    1、文件内容:jdepend-demo-2.9.1-10.el7.rpm以及相关依赖 2、文件形式:tar.gz压缩包 3、安装指令: #Step1、解压 tar -zxvf /mnt/data/output/jdepend-demo-2.9.1-10.el7.tar.gz #Step2、进入解压后的目录,执行安装 sudo rpm -ivh *.rpm 4、更多资源/技术支持:公众号禅静编程坊

    关爱儿童公益网站 web 项目.zip

    项目工程资源经过严格测试运行并且功能上ok,可实现复现复刻,拿到资料包后可实现复现出一样的项目,本人系统开发经验充足(全栈全领域),有任何使用问题欢迎随时与我联系,我会抽时间努力为您解惑,提供帮助 【资源内容】:包含源码+工程文件+说明等。答辩评审平均分达到96分,放心下载使用!可实现复现;设计报告也可借鉴此项目;该资源内项目代码都经过测试运行;功能ok 【项目价值】:可用在相关项目设计中,皆可应用在项目、毕业设计、课程设计、期末/期中/大作业、工程实训、大创等学科竞赛比赛、初期项目立项、学习/练手等方面,可借鉴此优质项目实现复刻,设计报告也可借鉴此项目,也可基于此项目来扩展开发出更多功能 【提供帮助】:有任何使用上的问题欢迎随时与我联系,抽时间努力解答解惑,提供帮助 【附带帮助】:若还需要相关开发工具、学习资料等,我会提供帮助,提供资料,鼓励学习进步 下载后请首先打开说明文件(如有);整理时不同项目所包含资源内容不同;项目工程可实现复现复刻,如果基础还行,也可在此程序基础上进行修改,以实现其它功能。供开源学习/技术交流/学习参考,勿用于商业用途。质量优质,放心下载使用

    MATLAB实现WOA-LSTM鲸鱼算法优化长短期记忆网络数据分类预测(含模型描述及示例代码)

    内容概要:本文档详细介绍了如何利用 MATLAB 实现鲸鱼优化算法 (WOA) 和长短期记忆网络 (LSTM) 相结合的技术——WOA-LSTM,在数据分类和预测领域的应用。文章首先概述了LSTM在网络训练中超参数依赖的问题以及WOA作为一种新颖的全局优化算法的优势。接着阐述了该项目的研究背景、目的及其重要意义,并深入讨论了项目面临的六大主要挑战,从模型优化到超参数空间管理。文档特别强调WOA-LSTM融合所带来的性能提升、降低计算复杂度的能力及其实现自动化的超参数优化流程。除此之外,文中展示了模型的应用广泛性,覆盖了从金融市场的股票预测到智能制造业的各种实际场景,并提供了具体的模型架构细节和代码实例,以帮助理解模型的工作原理和技术要点。 适合人群:具有一定编程技能的研究人员、工程师和科学家们,尤其是对深度学习技术和机器学习感兴趣的专业人士。 使用场景及目标:该文档的目标是向用户传授使用MATLAB实现WOA-LSTM进行复杂数据分类和预测的方法论,旨在指导读者理解和掌握如何利用WOA进行超参数寻优,从而改善LSTM网络性能。 其他说明:通过阅读这份文档,使用者不仅能够获得有关WOA-LSTM技术的具体实现方式的知识,而且还可以获取关于项目规划和实际部署过程中的宝贵经验。

Global site tag (gtag.js) - Google Analytics