客户端需要并期待快速的服务,所以您的地理处理服务需要做到快速而且高效。由于 ArcGIS Server 可以同时容纳多个客户端,因此低效的服务会导致服务器超载。服务效率越高,可使用相同计算资源提供服务的客户端就越多。
以下是一些可用来提高服务性能的提示和技术。通常,技术是按顺序显示的 - 能够较大幅度地提高性能的技术显示在前面。后几个提示可以将执行时间节省零点几秒,对于一些任务而言,这可能是必要的。
使用投影数据的图层
当您执行地理处理工具以创建一个要发布的结果时,运行工具时您应使用图层作为输入而非使用到磁盘的数据集的路径作为输入。一个图层会引用磁盘上的数据集,而多个图层则会对数据集的相关属性进行缓存。对网络数据集图层和栅格图层尤其如此。通过使用图层而不是到数据集的路径会有性能上的优势,因为当服务开始时,它从数据集创建图层、缓存数据集的基本属性并保持数据集开启。当执行服务时,数据集的属性可立即使用,且数据集是开启的,可提高操作的性能。
例如,Esri SampleServer 上的视域服务和 ArcGIS Network Analyst extension、创建行驶时间面的示例,它们都使用图层。取决于数据集的大小,这种方法在每次服务执行时可以省去 1 到 2 秒以上的时间。
对 ArcGIS Server 使用本地数据
地理处理服务需要的投影数据应该是 ArcGIS Server 的本地数据。同位于同一台计算机上的数据相比,通过网络共享 (UNC) 共享和访问的数据速度会慢些。性能在数字上有很大差别,但并不鲜见的是,通过 LAN 读写数据所耗费的时间是本地磁盘的两倍。
将中间数据写入内存
您可以将中间(临时)数据写入内存。与将数据写入磁盘相比,将数据写入内存速度更快。
将栅格写入内存是在版本 10.1 新增的功能。
对任务使用的数据进行预处理
大多数地理处理服务旨在成为专用应用程序,以便为 Web 客户端提出的特定空间查询提供答案。因为任务往往针对已知数据进行特定操作,所以几乎总可以对数据进行预处理,从而使操作过程得到优化。例如,增加属性或空间索引就是一个优化空间或属性选择操作的简单预处理过程。其他示例:
- 地理处理服务示例:分水岭教程通过创建流量和方向栅格对水文数据进行预处理。
- 您可以使用近邻分析或生成近邻表工具,通过已知位置预先计算距离。例如,假设您的服务允许客户端选择闲置宗地,此宗地到南加利福尼亚州洛杉矶河的距离是用户指定的。您可以使用按位置选择图层工具来执行这一选择,但更快的是预先计算与来自南加利福尼亚州洛杉矶河的每块宗地的距离(使用近邻分析工具)再将计算得到的距离存储为宗地属性。您将使用添加属性索引工具索引此属性。这样每当客户端发起查询,您的任务就可以对距离属性执行简单迅速的属性选择,而非执行更低效的空间查询。
添加属性索引
如果您的任务正在使用属性查询来选择数据,请为查询中使用的每个属性创建属性索引。您可以使用添加属性索引工具。您只需要在模型或脚本的外面创建一次索引。
添加空间索引
如果模型或脚本针对 shapefile 执行空间查询,请使用添加空间索引工具为 shapefile 创建空间索引。如果使用的是地理数据库要素类,则会自动为您创建和维护空间索引。在某些情况下,重新计算空间索引可以提高性能,如设置空间索引中所述。
使用同步而非异步
您可以指明您的地理处理服务将运行在同步还是异步模式下。在异步模式时,服务器会带来小部分的开销,这意味着异步任务的执行时间很少会低于一秒。在同步模式下执行任务比在异步模式下执行相同的任务要快大约 0.1 秒。
避免不需要的坐标变换
如果您的任务使用的数据集来自不同的坐标系,则您任务所使用的地理处理工具在执行时可能需要将坐标转换成单一的通用坐标系。根据您的数据集大小不同,从一个坐标系转换坐标至另外一个坐标系可降低您的任务速度。您必须了解您的数据集的坐标系统以及您的任务使用的工具是否需要进行坐标转换。您可能想要将您任务使用的所有数据集转换至一个坐标系中。有关坐标系及坐标系如何影响地理处理工具的详细信息,请参阅以下主题。
减小数据大小
如果数据集较小,则用于处理数据的任何软件的工作效率都会更高。可以采用以下两种方法来减小地理数据的大小:
10.0 与更高版本之间的差异
如果在 10.0 版本中创作了地理处理服务,则有用于创作服务的特定性能技术,如下所示。在 10.1 及更高版本中,无需再使用这些技术。