【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方式连接时 必须及时的释放服务实例
服务发布在本机上-方式为非池化-程序连接采用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方式连接时 必须及时的释放服务实例
相关文章推荐
- ASP Sql Server 建立服务连接出错的解决办法
- WS2008远程桌面连接时提示:“要登录到此远程计算机,您必须被授予允许通过终端服务登录的权限”的解决办法
- myeclipse中建立oracle数据库连接时出现ora-12705错误的解决办法
- 安装Jive Forums 2.0.1时出现“数据库连接不能建立”解决办法
- win7 提示"Windows 无法连接到System Event Notification Service服务......"的解决办法
- ArcGIS Server设置数据源,internet方式连接服务器错误解决方法
- 连接AnalysisServices时失败并且提示“请确保 "SQL Browser" 服务正在运行”的解决办法
- 连接Oracle11g数据库时遇到无监听,网络适配器无法建立等问题的一些解决办法
- WCF服务运行一段时间后客户端无法连接WCF服务的解决办法 (转)
- 静态IP不能连接Mysql服务的解决办法
- windows组件向导里没有internet 信息服务(iis) 的解决办法
- ORA-12514: TNS: 监听程序当前无法识别连接描述符中请求的服务--解决办法(转)
- SQL Server 2008建立连接时出现与网络相关的或特定于实例的错误的解决办法
- 客户端无法建立跟远程计算机的连接 错误解决办法
- Securecrt连接linux时速度特别慢的解决办法
- 不提示选择GPRS接入点,自动完成Internet连接的解决办法
- 访问ArcGIS Server服务遇到404错误的解决办法
- xftp工具连接aix ftp服务时目录项中出现空格的解决办法。
- [Linux]ln -s对目录建立符号连接后报错“符号连接层数过多”的解决办法
- SqlMetal 在与 SQL Server 建立连接时出现与网络相关的或特定于实例的错误 (error: 26 - 定位指定的服务器/实例时出错) SQL SERVER 2008解决办法