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