首页 | 新闻 | 交流 | 问吧 | 文档 | 手册 | 下载 | 博客

如何解决由于服务过多或异常导致ArcGIS Server 无法正常运行的问题

作者:  时间: 2011-01-17

      最近有一个用户向笔者反馈了一个ArcGIS Server使用时发现的一个问题,问题的描述大概是这样的:安装ArcGIS Server的服务器的配置是CPU为8路,内存为16GB,该服务器上共建了近30个服务。服务建立好后,ArcGIS Server的Manager和服务的使用都没有问题,可当服务器重启后,发现ArcGIS Server无法启动。而当手动在Windows服务管理器中启动Server的那三个服务后,系统的CPU占用率达100%!整个服务器直接处于死机状态。并且,此时还无法通过ArcGIS Server Manager或Catalog连接到Server。

二、问题分析

      这个问题的起因主要是由于该服务器上Server中发布的服务过多的缘故。对于Server上发布的每个服务,其至少会启动一个SOC进程,而按照ArcGIS官方建议每核启动2 个SOC实例,每个SOC实例预留100-400M内存。

三、解决方法

      要解决这个问题最根本的方法便是增加ArcGIS Server 的集群,或停掉暂时不用的服务。而在这个案例中最棘手的部分便是,一旦ArcGIS Server服务启动,整个操作系统便失去响应,同时使用 ArcGIS Server Manager和Catalog也无法访问Server。因此,使用常规方法来停掉服务是不可能的。好在ArcGIS Server 针对高级管理员用户提供了另外一种手段来解决这个问题——ArcGIS Server的服务的配置信息均通过xml存储在Server的安装目录下(%ArcGIS%\Server10.0\server\user\cfg),其后缀名为.cfg,并且一个服务对应一个.cfg文件。

image

在cfg文件中存储了其对应服务的全部配置信息,当ArcGIS Server服务启动时,Server会自动扫描该目录,并依据各.cfg文件中的配置信息启动相应的服务。

 

同时在该配置文件中还存在一个名为<StartupType>的配置项,当该项的值为automatic时,Server会自动启动该服务;而当其值为manual时,Server则默认不启动该服务。因此,要解决以上问题,我们需要做的就是将该目录下的所有.cfg文件中的StartupType的值全部修改为manual(默认为automatic)。然后再重新启动ArcGIS Server的三个服务,最后当Server正常启动后,我们便可以通过ArcGIS Server manager来对服务进行维护了。