ArcGIS Server集群部署
1 几个重要的概念
1.1 服务、池化、实例
使用ArcGIS Server发布一个地图服务,发布服务的同时会要求定义池化的类型、最小最大实例数。用户请求一个service时,是和该service的一个instance打交道。service有pooled(池化)和nonpooled(非池化)两种。 low isolation
pooled
servicenonpooledhigh isolation
Nonpooled创建最小个数实例,一个实例启动一个ArcSOC.exe。
Pooled:low isolation 是指一个ArcSOC.exe进程可以保有多个实例(也就是多线程);high isolation 一个实例占用一个进程。lowisolation的好处是可以启动相对少的ArcSOC.exe来维持同样数量的instance,节约服务器的内存资源;但如果一个ArcSOC.exe崩溃,那么里面的所有instance都会被销毁。
1.2 SOM、SOC
ArcGISServer是由一个SOM(Server Object Manager)和若干个SOC(Server ObjectContainer)机器组成。
SOM会在机器里以ArcGISSOM账户启动一个ArcSOM.exe的进程,这个进程负责管理(启动和停止)其他SOC进程(ArcSOC.exe),SOC进程虽然是由SOM启动,但是以ArcGISSOC账户运行的。ArcSOM.exe启动时,会自动启动两个ArcSOC.exe,一个用于记录AGS的日志,一个用于清空特定的工作目录。这两个ArcSOC.exe在任务管理器中可以根据所占用的内存数与其他ArcSOC.exe区分开来,占用内存较少的两个ArcSOC.exe便是由SOM进程自动启动的,而其他的ArcSOC.exe则是由具体service启动的。
SOC可以安装在多台机器上,是服务对象的宿主。每台SOC机器可以产生多个ArcSOC.exe,一个ArcSOC.exe可以运行多个服务对象,ArcSOC.exe是由SOM来管理。
SOM与SOCs是一对多的关系,SOM相当于公交站,SOCs相当于公交车.有任务了,SOM分配任务给SOCs,SOCs是真正的执行者。SOM下添加多个SOCs是为了分担负载,减少多个并发用户的时候请求的等待时间。
一个关于服务、池化、实例、SOM、SOC进程的例子。
Eg:现在机器上总共有2个服务:
World: pooled, low isolation(8 instance per process), min-instance:9, max-instance:16; 随即启动