当将有成百上千的用户访问您的服务时,您可能需要更改默认服务属性值以最好地适应您的部署。 该主题将概述其中一些属性及可用于最好地配置服务的方法。
池化
ArcGIS Server 发布的所有服务都是池化服务。 这意味着可以在多个应用程序会话之间共享服务的实例。
使用池化服务实例的应用程序仅在完成一个请求期间内使用该实例(例如,绘制地图或对地址进行地理编码)。 请求完成后,应用程序释放其对服务的引用,并将其直接返回给可用的实例池。
回收
服务回收操作可销毁那些不可用的服务并将其替换为新服务;也可回收被已过时的服务所占用的资源。
服务通常在多个应用程序和那些应用程序的用户之间共享。 在重用过程中,服务可能会发生一些问题,从而导致其无法供应用程序使用。 例如,应用程序可能会错误地修改服务状态,或者应用程序可能会错误地占用对服务的引用,使其无法用于其他应用程序或会话。 在某些情况下,服务也可能会损坏而无法使用。 回收操作可用于将服务池保持为最新状态并迁出所有过时或不可用的服务。
回收期间,服务器会销毁服务配置中的每个实例,之后再重新创建。 回收作为服务器的后台进程执行。 尽管屏幕上不会显示任何用于告知您回收正在进行的信息,但您可在日志文件中查看所有与回收相关的事件。
回收操作将销毁服务的所有运行中的实例,并重新创建,无论这些实例的个数是否高于指定的最小值。 要使运行中的实例数定期返回到所指定的最小值,您必须停止服务并重新启动。 执行这一过程的最好方法是创建一个可用于执行自定义 ArcGIS Server 管理 API 命令行可执行文件的 Python、shell 或 Windows 批处理脚本文件。 此自定义可执行文件将包含服务器名称、服务名称、服务类型,以及确定服务是否应按命令行参数启动或停止等信息。
回收事件之间的间隔时间被称为回收间隔。 默认的回收间隔为 24 小时,可在服务编辑器对话框中对其进行更改。 您还可以选择初次回收配置的时间。 从该时刻开始,每当达到回收间隔时间时,即会自动执行回收操作。
回收服务时,每次回收一个实例,这样可确保实例始终保持可用状态,而且可分摊为每个服务创建新实例时导致的性能损失。 回收按照随机顺序进行;但客户端当前正在使用的服务实例在被释放之前将不会被回收。 这样,执行回收操作就不会对使用服务的用户造成任何干扰。
如果回收期间可用实例不足,请求将排队等候,直到实例变为可用为止。 如果在此期间达到了服务的最长等待时间,日志将记录通常所记录的消息。
检查无效的数据连接
服务实例处于空闲状态时,服务器管理员很难确定与源数据的连接是否得到成功维护。 ArcGIS Server 具有内置机制,可用于检查与企业级地理数据库的无效连接。 这些检查可避免您的服务在与数据库的连接被删除或中断之后出现无响应的情况。
注:
对无效数据连接检查的支持不包括文件地理数据库。
通过在 ArcGIS Server Manager 中打开服务编辑器对话框的进程选项卡,然后选中定期检查并修复空闲实例的数据连接复选框,启用数据连接有效性检查。 还需要指定以分钟为单位的时间间隔,将以该时间间隔自动验证服务连接的有效性(并在需要时进行修复)。 默认值 30 分钟通常比较合适。
此外,如果您的服务闲置了一段时间后,防火墙关闭了与企业级地理数据库连接的端口,启用这些检查同样可能有所帮助。 在这种情况下,防火墙超时设置可能会对您所选择的时间间隔造成影响。
超时
解各种可用的服务超时值有助于您保持服务正常工作和可用。 这些值在服务编辑器对话框的池化选项卡中提供。
客户端在获取对服务的引用之后,会在释放服务之前的特定时段内使用该服务。 使用时间是从客户端获取对服务的引用开始到释放此服务所经历的时间。 为避免客户端过长时间地占用对服务的引用(即客户端未正确释放服务),每个服务都具有一个客户端可使用一个服务的最长时间的属性。 如果客户端占用某一服务的时间超过最长使用时间,此服务将被自动释放,而客户端将失去对此服务的引用。
抢先版本:
创建新服务时,最长使用时间的默认值是 600 秒(10 分钟)。 但是,在随各 ArcGIS Server 站点提供的预生成 PublishingTools 服务中,最长使用时间设置为 3600 秒(60 分钟)。 这是为了应对要将大量数据复制到服务器的发布作业。
通过配置最长使用时间还可防止服务被用于执行过量的工作(超出管理员计划的工作量)。 例如,由一个应用程序使用的执行地理数据库检出的服务可能具有 10 分钟的最长使用时间。 与之相比,仅用于在一个应用程序中绘制地图的单图层服务的最长使用时间可能只有 1 分钟。
当服务正在使用的实例达到最大实例数时,请求服务的客户端将排队等待,直至另一个客户端释放了其中的某一服务。 从客户端请求服务开始到获得服务的时间为等待时间。 每个服务都具有一个客户端获取一个服务将等待的最长时间属性。 如果客户端的等待时间超过服务的最长等待时间,请求将超时。
另一个超时指明了空闲实例可保持运行的最长时间。 客户端停止使用服务期间,这些实例将仍然运行在服务器上,直到其他客户端需要实例为止。 正在运行但未被使用的实例仍会占用服务器上的一些内存。 您可以将运行中的服务数降至最低,以通过缩短此空闲超时来节省内存,默认的空闲超时为 1800 秒(30 分钟)。 空闲超时过短的缺点在于,如果运行中的所有服务都出现了超时,那么后续的客户端便需要等待创建新实例。
当客户端由于服务器启动或为响应针对服务器的请求而在 GIS 服务器中创建服务实例时,客户端对服务实例进行初始化所用的时间被称为服务的创建时间。 GIS 服务器具有一个启动超时值,用于指定启动尝试可经历的时间,超过该时间后,GIS 服务器将假定服务的启动处于挂起状态并取消创建服务实例。 默认值为 300 秒(5 分钟)。
GIS 服务器同时在内存和服务器的日志中记录有关等待时间、使用时间和在服务器内部发生的其他事件的统计数据。 服务器管理员可使用这些统计数据确定诸如某一服务的等待时间是否很长的问题,如果过长则可能表示需要增加该服务的最大实例数。
架构中可能会遇到其他超时,这些超时会导致指定的服务超时值与客户端遇到的实际超时之间存在差异。 例如,托管 ArcGIS Web Adaptor 或网络负载均衡器的 Web 服务器会施加影响服务的超时。
注:
如果站点承担的负载非常高,则指定的超时值与客户端遇到的超时之间会有差异。
限制用户可对服务执行的操作
为了便于控制 Web 服务的使用方式,每种类型的服务都具有一组允许的操作。 每个操作都包含一系列以组为单位进行启用或禁用的方法。 Web 服务的客户端只能调用允许的操作方法。
假设您要允许 Web 制图服务的客户绘制地图但不查询地图图层的数据源。 则需要禁用“数据”操作并确保允许进行“地图”操作。
此讨论中特别关注要素服务,因为它们用于对 GIS 数据执行基于 Web 的编辑。 要素服务具有一组可用于限制编辑功能的附加操作。 您可以访问 ArcGIS Server Manager 中服务编辑器对话框的要素访问选项卡以启用或禁用这些操作。 也可以通过强制执行基于所有权的访问控制来防止用户编辑不是由其最初创建的要素。
有关允许对各种服务类型执行的操作,请参阅帮助中的服务类型部分。