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

本文介绍了一种解决ArcGIS Server在特定配置下启动失败并导致系统资源耗尽的问题方法。通过修改服务配置文件中的启动类型参数,可以避免服务器启动时自动加载过多服务实例,从而确保系统的稳定运行。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、问题描述

      最近有一个用户向笔者反馈了一个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文件中的配置信息启动相应的服务。.cfg文件内容如下(不同类型服务,其xml格式不同):

 
  
< ServerObjectConfiguration >

< Description ></ Description >

< Properties >
</ Properties >

< Recycling >
< Start > 00:00 </ Start >
< Interval > 86400 </ Interval >
</ Recycling >

< Info >
< WebEnabled > true </ WebEnabled >
</ Info >

< IsPooled > true </ IsPooled >
< MinInstances > 1 </ MinInstances >
< MaxInstances > 2 </ MaxInstances >
< InstancesPerContainer > 1 </ InstancesPerContainer >
< WaitTimeout > 60 </ WaitTimeout >
< IdleTimeout > 1800 </ IdleTimeout >
< UsageTimeout > 600 </ UsageTimeout >
< CleanupTimeout > 30 </ CleanupTimeout >
< ServiceKeepAliveInterval > -1 </ ServiceKeepAliveInterval >
< StartupTimeout > 300 </ StartupTimeout >
< Isolation > high </ Isolation >
<StartupType>manual</StartupType>

</ ServerObjectConfiguration >

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

 
  
@echo ***********************开始关闭ArcGIS Server服务***********************
net stop ArcSOCMonitor /y
net stop "ArcGIS Server Manager Service"

@echo ***********************开始启动ArcGIS Server服务***********************
net start "ArcGIS Server Manager Service"
net start ArcServerObjectManager

转载于:https://www.cnblogs.com/wowMVP/archive/2011/01/17/1937483.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值