池化服务与非池化服务的区别

来源:互联网 发布:淘宝代销分账 保証金 编辑:程序博客网 时间:2024/05/19 10:14

摘抄自:《基于ArcGIS server的池化与非池化服务研究》


今天老大让我解决arcgis server服务启动之后,arcsoc.exe进程启动过多,内存占有率太高的问题,便发现了这篇文章,将服务改为池化服务便可以解决这个问题(我还没有实践,不过感觉没什么问题)。下面是论文的部分摘抄内容。

——————————————————————————————————————————————————————————


为了优化系统运行时的性能,必须对服务器对象的生命周期进行有效管理,并且对于不同的应用场景选择相应的管理方式。为了解决该问题,可以通过设置服务器对象的池化与非池化服务管理来解决。

池化服务:

选取池化服务时,服务器对象在服务器运行时预先创建了指定数目的,并且只在用户请求服务器对象时,优先使用已创建的服务器对象,如果没有空闲的服务器对象才会创建新的服务器对象返回给用户进程进行相应的操做,并且当用户操作结束后立即将服务器对象释放回到服务器对象池中等待下一个用户会话。

分类:

high isolation——服务的每个实例都会独占一个arcsoc.exe

low isolation——一个进程内可保存有多个(默认是8个,最多可达256个)实例。好处是,可以启动相对少的arcsoc.exe来维持同样数量的实例,节约服务器的内存资源。缺点是,如果一个arcsoc.exe崩溃,那么里面的所有实例都会被销毁,及时用户正在使用它们。

一般来说,对于池化服务使用high isolation

池化服务的特点:

1.池化服务器对象是预先创建的服务器对象,他在用户请求服务器对象前就已预先获取了服务器中包含的空间信息,并在内存中创建并维持了数目服务器对象。有效的降低了每次用户请求时重复获取空间信息的时间与创建服务器对象的系统开销。

2.池化服务器对象是可供多个用户共享。由于池化服务器对象仅仅在用户请求时返回给用户,当用户的一次操作结束后立即释放服务器对象到服务器对象池中,所以池化服务器对象允许多个应用程序进程共享同一个服务器对象,即多个用户可以在其操作进程中使用同一个服务器对象,从而达到资源的最大化利用,而且由于在用户获取服务器对象前已经创建了度武器对象,

所以减少了重复创建和销毁服务器对象的开销,加速了系统响应的时间。

3.池化服务器对象时无状态的。每次调用的服务器对象都是初始化状态,其本身无法自动保存其状态。并且池化服务器对象只读模式,不能修改服务器对象及其相关的对象。

非池化服务:

用户第一次请求服务器对象时创建,并当用户会话结束后才会释放服务器对象,所以一个非池化服务器对象对应一个用户进程。

非池化服务器对象是有状态的,有服务器状态的对象时可读写的对象,意味着应用可以对服务器对象及其相关对象改动。

如果全部使用非池化的服务器对象将会使得服务器在大并发访问时产生严重的性能问题,甚至瘫痪。

所以当不需要修改服务器对象中的要素集内容的情况下使用池化服务器对象来改善系统性能。

——————————————————————————————————————————————————————————


 

0 0
原创粉丝点击