您的位置:首页 > 其它

【20110224-01】ArcGIS Server与非池化服务建立的 ArcGIS Server Internet 连接的速度非常慢 解决办法

2011-02-24 16:39 387 查看
今天做了一个非常简单的地图测试程序

服务发布在本机上-方式为非池化-程序连接采用ArcGIS Server Internet 方式 运行之后发现执行非常慢,查询esri帮助得到如下建议:

通过 ArcGIS Server 本地连接而非 ArcGIS Server Internet 连接来使用非池化服务。


进入正题:

Internet 连接以完全无状态方式使用服务。通过 Internet 发送的每个服务请求均会在服务的后端 DCOM 组件上生成上下文获取及发布。如果服务为非池化服务,则每个上下文发布都将造成服务实例的取缔,并对其进行重新创建。这种服务的运算量非常大,尤其是当客户端向服务发送多个请求时。例如,一个简单的 Web ADF 制图应用程序可能要连接到服务,以获取地图对象、MapDescription 和 ImageDescription,然后执行绘图请求。上述操作中的每一个都包括上下文获取和发布。如果服务为非池化服务,且客户端正在通过 Internet 连接该服务,则上述操作中的每一个都将造成服务实例的创建及取缔,从而降低性能。

现在问题又来了,当我采用ArcGIS Server Local方式连接资源的时候,连续2次打开页面后,第三次请求就不能显示地图,在此牵涉到池化和非池化以及Internet和Local两种连接方式的区别:

ArcGIS Server Internet:

ArcGIS Server Internet方式去连接GIS Server的时候,就相当于去连接标准的web service, 因此只有这些web service暴露出来的webmethod才可以调用,

因此通过ArcGIS Server Internet方式去连接得到某个服务的时候所能得到的功能是很有限的。如上所说,Internet 连接以完全无状态方式使用服务,通过 Internet

发送的每个服务请求均会在服务的后端 DCOM 组件上生成上下文获取及发布,Internet方式连接非池化的数据服务的时候,每个上下文发布都将造成服务实例的取缔,

并对其进行重新创建,说白了即必须是SOC.exe的频繁的取缔和创建,这种服务的运算量非常大,又是在地图显示之前,导致页面加载缓慢。

ArcGIS Server Local:

ArcGIS Server Local方式去连接GIS Server(这里讲的只是针对非池化)的时候,首先创建一个服务实例,成功连接地图服务后服务实例并没有被取缔。

到了这里有人或许 认为在浏览器关闭的时候会释放这个实例,其实不然,浏览器被关闭的时候GISServer服务器并不知道它被关掉了,session还一直有效,

所以这个服务实例还被占用着,直到session超时被服务器强制回收。如果服务实例全部被占用下一个请求将无法成功取缔实例,就会导致无法访问.

因此用local方式连接时 必须及时的释放服务实例
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐