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