ServerObject的池化和非池化模式
当我们访问一个服务器对象Server Object的时候,这个对象是已经存在的呢?还是在访问时新建的?都有可能,这取决于我们如何选择。如果我们选择共享池化模式,则在SOM启动的时候,SOM就建立了几个SO供外界访问,一个SO被A请求访问后,被释放回共享池中,还可以下次被B访问使用,因此,SO将可以被多个用户访问。如果是非共享池模式,当一个请求访问时,SOM专门为它新建一个SO。
这样,在池化模式下,访问与SO的比例不是1:1,它支持更多的用户;而非池化模式就是1:1的,它支持的用户比池化模式少。
SO 放在什么地方,对,它就放在一个Server Context中,即一个进程中。一个访问连接到SO,是一个例程,这个例程是放置在一个进程中的。而对于这个进程的特征,我们还需要进一步设置,即进程的孤立性。如果Server Context是高孤立的(high isolation),那么一个进程中只能放置一个例程,这样保障了安全性;如果是低孤立的,四个访问连接的例程都可以放置在一个进程中,它的特点是节约资源。至于如何设置,就有必要考虑我们的硬件设备了。
池化和非池化的设置对状态或非状态的应用程序也有影响,这些我们将在后面的blog中提到。
[转自蒋波涛的博客]
http://www.hmgis.cn/post/242.html
ArcGIS Server池化和非池化类型服务区别
如果是非池化的服务,服务中的数据可以是注册了版本或者没有注册版本的,如果是注册了版本的数据,所有的编辑操作是可以进行redo、undo操作,并且有冲突解决的方案。如果是没有注册版本的数据,就不可以进行redo、 undo的操作,但是可以对编辑内容选择一次的保存和不保存。
如果是池化的服务,那么服务中的数据就只能是非版本的。这种情况下的编辑功能是最简单的,编辑的内容一旦完成就进行了保存,没有办法redo、undo。比如对一个多边形进行了节点移动的操作,一旦操作完成就不可以进行恢复。
http://hi.baidu.com/%CB%AE%C4%BE%C8%FD%C0%C9/blog/item/0f752b441249b744500ffe65.html
池化-鱼
“一个水缸里有好多鱼,你想喂鱼。
池化是你任意抓住一条喂,喂了就放回去。
非池化是指定一条鱼让你喂,直到你不想再喂鱼,就把鱼杀了。
以上是我的理解,不知对否,请高手不吝赐教 !”
这个比喻有点意思,但是非池化还不仅是指定一条鱼的问题,事实是这条鱼原本并不存在,要现生成。所以从非池化获得鱼的速度比池化中从已有的鱼中任意抓一条要慢
http://bbs.esrichina-bj.cn/ESRI/thread-48027-1-1.html
任务管理器中arcsom.exe和arcsoc.exe的个数问题
安装了ArcGIS Server的机器,当打开任务管理器的时候,会看到里面有arcsom.exe和arcsoc.exe进程,但它们的数量具体是如何决定的呢?以下的分析仅针对单机配置的情况(假定所有部件都安装在一台机器上),对于分布式的安装,可以此类推。
GISServer是由一个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启动的。
插入一些概念:
用户请求一个service时,是和该service的一个instance打交道。service有pooled和 nonpooled两种。
对于pooled service来说,一个用户(或者应用程序)请求该服务时,会随机获得一个该服务已经创建的instance 的引用,由该instance对请求做出响应;请求完成后,用户会立即释放该instance的引用,使其返回假想的instance pool中,用户发出另一个请求,重复上面的过程。
如果是non pooledservice,用户第一次发出请求时,也会随机获得该service已经创建的一个instance引用,但请求处理完成后,该用户继续持有对该instance的引用,直到用户断开与服务器的连接(结束程序),该instance会被销毁,然后SOM会创建一个新的instance来维持数量。
对于pooled service,又有low isolation和high isolation两种。
highisolation是指service的每个instance都会独占一个进程(arcsoc.exe),lowisolation则是指一个进程内可保有多个(默认是8个,最多可达256个)instance(就是所谓的多线程)。lowisolation的好处是可以启动相对少的 arcsoc.exe来维持同样数量的instance,节约服务器的内存资源;但如果一个 arcsoc.exe崩溃,那么里面的所有instance都会被销毁,即使用户正在使用它们。highisolation的优缺点则与之相反。一般来说,对于pooled service使用high isolation设置。non pooledservice的instance总是独占一个进程(同highisolation)。另外可以指定一个服务的最小和最大instance数目,服务启动时会自动创建最小数目的instance等待调用;当创建的instance数目达到最大数量时,所有的请求都会进入等待队列。
至此,可以来分析一个具体的案例了。现在机器上总共有2个服务:
World:pooled,low isolation(8 instance per process),min-instance:9, max-instance:16 ,随机启动
China: non pooled ,min-instance:2, max-instance:4,手动启动。
开机,SOM启动一个arcsom.exe,随后启动两个arcsoc.exe;World服务启动,创建9个instance,其中8个 instance公用一个arcsoc.exe,剩下一个instance启动另外一个arcsoc.exe。此时机器中共有1个 arcsom.exe,4个arcsoc.exe。此时手动启动China服务,创建2个instance,每个instance会启动一个 arcsoc.exe。此时,机器中共有1个arcsom.exe,6个arcsoc.exe。
观察统计可知,最小instance数量为1的服务启动时间平均在17秒左右(cpu:Intel T7200)。可以看出,对于经常不用的服务,我们可以将它设置成手动启动,一来节约内存,二来加快机器启动速度。
http://bbs.esrichina-bj.cn/ESRI/thread-41757-1-1.html
- 大小: 1.5 KB
分享到:
相关推荐
其中,地图打印服务是ArcGIS Server提供的一项重要功能,允许用户通过网络请求打印指定范围的地图,并支持自定义打印模板,极大地提高了地图制作的灵活性和效率。 #### 二、ArcGIS Server打印服务发布流程 1. **...
1. **池化模式**:为了提高性能和响应速度,ArcGIS Server 支持池化模式。在这种模式下,服务端会预先创建一定数量的对象实例,当客户端请求时可以直接使用,无需每次都创建新的实例。 2. **无状态和有状态的应用**...
ArcGISServer是ESRI(环境系统研究所)推出的一款地理信息系统(GIS)服务器产品,广泛应用于地理信息的网络发布和共享。ArcGISServer开发涉及多个方面,包括地图服务、数据源、API接口、Web开发框架等,其中的...
ArcGIS Server 发布服务 ArcGIS 10.1 中的地图服务发布流程包括创建地图服务、发布地图服务和设置服务参数三个部分。下面将详细介绍每个部分的知识点。 创建地图服务 在 GIS Server 下双击添加服务(Add ArcGIS ...
需要检查并编辑`Server.dat`文件,位于`$ArcGIS_install_path/server/system/`目录下,确保其中的服务配置正确,如非池化服务(nonpooledservice)、数据库连接(sde database)、许可类型(serveradvancedlicense)...
ESRI.ArcGIS.ADF.ArcGISServer.MapServerProxy mapserver_dcom = new ESRI.ArcGIS.ADF.ArcGISServer.MapServerProxy(NotPooledServiceUrl); ESRI.ArcGIS.ADF.ArcGISServer.MapServerInfo mapi = mapserver_dcom....
4. **私有云环境部署**:通过资源池化技术,可以在私有云环境中部署 ArcGIS 10.2 for Server。这种方式支持多租户管理、资源隔离和节点的动态扩展。 #### 性能优化 为了确保 ArcGIS 10.2 for Server 在生产环境中...
3. ArcGIS Server 9.2(已安装SP2补丁),配置一个ArcGIS Server服务,MapServer属性设置为使用池化连接,并选择"In a separate process for each instance (high isolation)"进程模式。例如,创建一个名为"World"的...
ArcGIS Server on Amazon则是面向更高级别用户的解决方案,允许用户在亚马逊云平台上部署和管理ArcGIS Server,充分利用云计算的弹性和灵活性。 #### 三、ArcGIS云计算的关键议题 面对云GIS环境的构建与优化,存在...
### ArcGIS云计算背后的故事 ...无论是通过ArcGIS Online实现地图和服务的快速共享,还是通过ArcGIS Server On Amazon构建高度定制化的地理信息系统,ArcGIS都展示了其在GIS领域的领导地位和技术实力。
此解决方案充分利用私有云环境,将GIS资源进行池化管理,通过IaaS(基础设施即服务)层提供计算能力、存储能力和网络负载平衡,同时结合ArcGIS Server和Portal for ArcGIS等核心组件,实现GIS服务的自动化管理和自...
ArcGIS私有云解决方案旨在解决上述挑战,通过构建一个弹性的云平台架构、实现GIS服务实例的池化管理、建立完善的监控机制、提供开放的后台管理接口等方式,来提升GIS服务的整体性能和用户体验。 #### 弹性的云平台...
- `Dispose`: 清理托管和非托管资源。 5. **WebGeocode** - **概述**:`WebGeocode` 类扩展了 `WebObject` 类,提供了地理编码服务的功能。 - **构造函数**: - `WebGeocode(IServerContext context, string ...
在ArcGIS Server 9.3及更高版本中,你需要手动创建Geometry Service,确保其命名为“Geometry”,且每个服务器仅能有一个此类服务,但可以有多个实例。此外,Geometry Services是池化的,支持动态管理和调整。 **...