ArcSOC 实例的数量导致 ArcGIS Server 性能问题
原因
当许多实例在单个主机上运行时,会出现此问题,从而超出可用内存限制,消耗过多资源,
并导致服务环境不稳定。 无需额外配置即可调整 ArcGIS for Server 以获得最佳性能。
即使系统处于空闲状态,也会将其设置为处理大量请求。 当系统处于负载状态时,内存使用将会增加,
以适应正在处理的高性能功能。 一个 ArcSOC.exe 进程和每个正在运行的实例都会创建两个 ArcSOC.exe 进程。
例如,一个具有三个正在运行的实例的地理处理服务,将生成七个 ArcSOC.exe 进程。
解决方案或解决方法
有两个选项可用来尝试 解决 此行为。
- 选项 1 适用于 ArcGIS Server 10.7 和更高版本。
- 选项 2 适用于所有版本的 ArcGIS Server。
选项 1:将服务设置为使用共享实例池。 (可在 ArcGIS Server 10.7 及更高版本中使用。)
从 10.7 开始,ArcGIS Server 包括一个共享实例池;默认情况下,此共享实例池中有四个 ArcSOC.exe 进程。 通过共享实例池(而非启动其自己的单独 ArcSOC.exe 进程的服务),它将利用共享实例池中可用的 ArcSOC.exe 进程 。 处理完请求后,共享池中的任何其他服务均可免费使用该 ArcSOC.exe 进程。 这样可以减少在 ArcGIS Server 计算机上运行的 ArcSOC.exe 进程的数量,且非常适合不需要自己的单独 ArcSOC.exe 进程的服务。
共享实例池选项可用于已从 ArcGIS Pro 发布的地图服务。 以下限制条件用于限制可以使用共享实例池的服务:
- 仅地图服务可以配置为使用共享实例池。 不支持其他服务类型,例如地理处理服务。
- 仅可以启用地图服务的某些功能,例如,要素访问、WFS、WMS 和 KML。 请先关闭所有其他应用程序,然后再继续下一步。
- 具有自定义服务器对象扩展模块 (SOE) 或服务器对象拦截器 (SOI) 的服务无法使用共享实例。
- 从 ArcMap 发布的服务无法使用共享实例。
- 从 ArcGIS Pro 发布的缓存地图服务若满足以上要求,则可以使用共享实例。
以下步骤描述了如何将服务设置为使用共享实例池。
- 使用管理员帐户登录到 ArcGIS Server Manager。
- 在站点(根)> 系统下,单击要修改的服务。
- 单击池化,然后选择共享实例池单选按钮。
- 单击保存并重新启动。
选项 2:将最小实例数设置为“0”。 (在所有版本的 ArcGIS Server 中可用。)
如果无法利用 ArcGIS Server 中的共享实例池功能,则请考虑将很少使用的服务的最小实例数设置为“MinInstances = 0”。 这可以为其他活动地图和地理处理服务保留内存和容量空间。 最小实例数为零可能会导致 延迟性能,因为 ArcSOC 在请求后启动需要花费一些时间。 对于用户经常使用的服务,请将最大实例数设置为“MaxInstances = n+1”(“n”是主机的内核数)。 有关 ArcGIS for Server 性能优化的其他信息,请参阅以下 ArcGIS 帮助文档:调整和配置服务。
以下步骤描述了在 ArcGIS Server Manager 中指定 ArcSOC.exe 进程实例数的方法。
- 使用管理员帐户登录到 ArcGIS Server Manager。
- 在站点(根)> 系统下,单击要修改的服务。
- 单击池化并将每台计算机的最小实例数修改为 0。
- 单击保存并重新启动。最小实例数属性必须小于最大实例数属性。