ArcGIS Server 从 10.7 开始提供对从 ArcGIS Pro 发布到 ArcGIS Server 站点的每个兼容地图服务使用共享实例或专用实例的功能。在 10.7 之前,所有服务使用的模型现在称为专用实例。使用共享实例可以通过池化多个活动服务器进程以供多个服务使用的方式来节省内存使用量。这样做可以减少没有积极处理请求的服务的内存使用量。
因此,对于接收偶发请求的服务,尤其是服务器站点托管许多服务时,建议使用共享实例。此外,专用实例可让服务在通过一个或多个服务器进程处理请求时始终可用,同时也是经常性或计算密集型请求的理想之选。
本主题将对服务实例和进程进行说明,介绍共享和专用实例的最佳做法,并提供设置服务实例设置的步骤。
服务实例简介
对 ArcGIS Server 站点中的某个服务发出请求(例如平移地图或导航至某个地址)时,该请求将由在服务器计算机上运行的已发布服务的实例进行处理。服务实例由名为 ArcSOC 进程的 Esri 专有服务器进程提供支持。每个 ArcSOC 进程运行时都需要占用一定量的计算机内存。
如果 ArcGIS Server 站点上有许多服务,且每个服务使用一个或多个持续运行的服务实例,则计算机可用内存最终将达到限值。运行服务实例也会给您的组织带来能量消耗,如果您在云基础架构上部署 ArcGIS Server,则每个正在运行的服务实例都会给您带来直接的货币成本。
因此,ArcGIS Server 管理员有必要监控其站点运行的实例数,并在性能受到内存使用量抑制时限制所运行的实例数。
用户希望在与服务交互时能够快速获得结果 (包括借助服务构建的产品,例如 Web 地图和应用程序)。处理服务收到的流量时需要足够的 ArcSOC 进程。但是,如果配置的服务器资源超过了服务所需,则会浪费计算机内存、能源和资金。对于管理员来说,在不影响性能的前提下,将运行的服务实例数量减少到所需要数量是一个理想的目标。
有关用于优化 ArcGIS Server 性能的活动管理策略的详细信息,请参阅预估和容纳用户。
最小和最大服务实例数
对于发布到 ArcGIS Server 站点的每个服务,您可以指定正在运行的最小专用实例数和可以使用 ArcGIS Server Manager 为服务运行的最大实例数。例如,如果将此参数设置为三个实例,则在给定时间内始终会至少有三个实例在 ArcSOC 进程上运行,即使服务未使用时亦如此。
如果将最小实例数设置为零,则不使用服务时,将不会运行任何实例。这样,可以通过关闭未使用的服务来节省内存使用量,但也有一个缺点:用户下次向服务发送请求时,会发生响应延迟。在 ArcGIS Server 启动实例来处理服务请求时,这种冷启动对发出请求的用户尤为明显。
共享和专用实例
自 ArcGIS Server 10.7 版本引入的共享实例池可始终在站点中的每台计算机上运行。从 ArcGIS Pro 中发布的任何地图服务都可以配置为使用共享实例池。
提示:
要确定地图服务是从哪个应用程序发布的,请参阅下面为服务配置实例类型中的第 3 步。
配置共享实例时,使用此池的服务在不处理请求时不会再产生资源使用成本,并且没有冷启动的缺点。
以下限制条件用于限制可以使用共享实例池的服务:
- 仅从 ArcGIS Pro 中发布的地图服务可以配置为使用共享实例池。不支持其他服务类型,例如地理处理服务。
- 仅可以启用地图服务的某些功能,例如,要素访问、WFS、WMS 和 KML。请先关闭所有其他应用程序,然后再继续下一步。
- 具有自定义服务器对象扩展模块 (SOE) 或服务器对象拦截器 (SOI) 的服务无法使用共享实例。
- 从 ArcMap 发布的服务无法使用共享实例。
- 从 ArcGIS Pro 发布的缓存地图服务若满足以上要求,则可以使用共享实例。
共享实例引入后,与专用实例之间有着明显的区别,专用实例只能运行一个特定服务直到其关闭。但是专用实例仍然是管理员的有效选择,尤其是对于高流量服务。使用专用实例可以为服务提供专用服务器资源,从而确保实现这些服务的最佳性能,同时也可以防止高流量服务使用池中的所有进程。
注:
将 ArcGIS Server 从较早版本升级到 10.7 时,服务的最小实例数设置不会发生变化,但是会为共享实例留出一个 ArcSOC 进程的默认池。如果要为部分或全部服务配置共享实例,可以在升级后进行配置。
使用每个实例类型的时机
没有哪个实例类型可完美适用于所有地图服务。作为服务器站点管理员,您可以决定发布到站点的每个服务应使用哪个实例池。
您可以为某些服务配置共享实例,也可以为其他服务提供其专用的 ArcSOC 进程。如果您知道某些服务将接受连续请求,而其他服务接收偶发请求,则可以选择这种分开配置的方法。如果所有服务都只是偶尔接收请求,则考虑为所有服务配置共享实例可以节省内存使用量。
提示:
使用模式会经常发生变化,因此在监控站点时,请根据流量和服务器性能,适当调整实例类型设置。
共享实例池适用于兼容的地图服务,例如:
- 不经常使用的服务。因部署而异,但对于大多数部署来说,意味着平均每分钟的服务请求数少于一个。
- 最小专用实例数已设置为零的服务。
- 大多数缓存地图服务。
相比之下,专用实例池仍然是以下服务的最佳选择:
- 在服务级别协议下签约的服务。
- 频繁使用的服务(近乎连续请求或计算密集型请求)。
- 最小专用实例数已设置为较高值的服务。
- 与共享实例池不兼容的所有服务(请参照以上定义)。
配置默认服务实例设置
管理员可以为从 ArcGIS Pro 发布的兼容地图服务指定默认实例类型设置。当此类服务发布到您的服务器时,它将使用默认实例类型。之后,您可以使用下一节中的步骤更改单个服务的实例类型。
如果选择共享实例作为服务的默认实例类型,则该设置仅适用于兼容的地图服务。无法使用共享实例池的服务将继续使用其专用实例池。
更改默认实例类型设置仅影响未来发布的服务。而不会更改现有服务的实例类型设置。
注:
共享实例池将占用一小部分内存,具体视接受请求的服务数量而定。对于处理大量服务请求的共享实例池,您可以看到随着服务接受请求的数量增多,共享实例池所占内存也在不断增加。在单个回收期内,服务接受请求的数量达到 50 后,内存消耗将减缓。
请按照以下步骤指定默认实例类型或共享实例池中的实例数。
- 以管理员身份登录到 ArcGIS Server Manager。URL 地址格式为 https://webadaptor.domain.com/arcgis/manager。
- 浏览至站点 > 设置。您将从池化页面访问这些设置。
- 要更改兼容地图服务的默认实例类型,请单击默认实例类型编辑按钮。选择要作为默认设置的实例类型:
- 如果您预计大多数服务将频繁接收流量,或者服务器站点中运行的服务数量不足以至于计算机内存负载很高,请选择专用实例。
- 如果您发布的许多服务只接收不频繁的请求,或者您担心将要发布的其他服务会使内存资源变得紧张,请选择共享实例。
- 单击应用确认选择。
- 要更改在共享实例池中运行的服务实例数,请单击共享实例设置编辑按钮。
如果您的站点既包含使用共享实例的服务,又包含使用专用实例的服务,请将共享池中的实例数设置为与 ArcGIS Server 站点中各台计算机的 CPU 内核数相同(例如,如果使用 4 核计算机,则将共享实例数设置为 4)。如果要将大部分或全部服务配置为使用共享实例池,则需要考虑将实例数增加为核数的两倍(例如,如果使用 4 核计算机,则将共享实例数设置为 8)。
这些建议旨在帮助您入门。您应该监控自己的 ArcGIS Server 站点,以确保充分利用可用资源,且站点不会出现流量超载问题。池中的最佳实例数取决于由共享池提供服务的流量、所提供的数据数量和类型以及可用计算资源量。
- 单击应用确认选择。
配置服务的实例类型
管理员还可以在发布服务后指定单个服务的实例类型,以覆盖默认设置。请按照以下步骤更改单个服务的实例类型。要使用共享实例池,必须从 ArcGIS Pro 发布地图服务,并满足上述其他要求。
- 将 web 图层(作为地图图像图层)或 web 地图从 ArcGIS Pro 共享到 ArcGIS Enterprise 门户。将在联合 ArcGIS Server 上创建地图服务。
注:
在使用共享实例池的地图服务上只能启用某些地图服务功能(要素访问、WFS、WMS 和 KML)。
- 以管理员身份登录到 ArcGIS Server Manager。URL 地址格式为 https://webadaptor.domain.com/arcgis/manager。
- 找到地图服务并单击它。
随即显示编辑页面。在常规选项卡的原始文档下,创作应用程序属性指示此地图服务是从 ArcGIS Pro 发布的。
- 在页面左侧,单击池化选项卡。
此选项卡用于指定服务的专用实例范围、设置服务超时属性,并可以指定服务使用专用实例还是共享实例。
- 单击共享实例池选项。
- 当您选择此选项时,一些地图服务功能(在功能选项卡上)将无法使用。如果您无法选择共享实例池选项,请确保地图服务上没有启用任何不支持的功能。请参阅步骤 1 中的注释。
- 打开服务的共享实例池后,指定实例数部分(对于专用实例池)将无法使用。
- 准备就绪后,单击保存并重新启动。地图服务上的实例池选项发生更改后,服务必须重新启动。
您可以随时更改地图服务使用的实例池;当服务流量模式发生变化时,您可能需要执行此操作。