Problem: GIS服务负载很大时W3WP和SOM进程占用大量内存

文章编号 : 34872
软件: ArcGIS Server 9.2, 9.3, 9.3.1
操作系统: Windows XP, 2003 Server
已邀请:

EsriSupport

赞同来自:

错误信息:
当GIS服务负载很大时,IIS的W3WP进程和SOM进程占用大量的内存,严重影响其他程序。
原因: .NET的垃圾回收有代的概念(Garbage Collector Basics and Performance Hints)。本地变量和短期对象划分为第一代,启动垃圾回收的时候会被频繁地回收。长生命周期的对象是第二代或更高,启动垃圾回收的时候回收频率会小很多。
ArcGIS Server DCOM运行时可调用包装代理以及它们引用的SOM进程里的DCOM对象很可能被划分成到高等级,在Web服务器和SOM里累积,直到第二代或第三代的垃圾回收算法被触发。
高负载情况下,二代和三代垃圾回收可能由于CPU使用率高二延迟,从而引起W3WP和SOM进程的内存占用快速增长。

解决方法:
如果在web service服务器上,内存是关键的受限资源,降低.Net默认的垃圾回收时间间隔也许是比较理想的办法。降低垃圾回收间隔会促使垃圾回收算法清除那些不再使用的二代和三代对象。 ArcGIS Server web service通过web.config的设置,强制在指定数量的请求以后启动垃圾回收。 根据对REST服务在压力情况下的表现,默认使用垃圾回收间隔(10000次请求)来解决上面所描述的内存消耗问题。 如果存在W3WP和SOM占用进程内存增长的问题,垃圾回收间隔可以设置的更小(比如1000)。这会触发更频繁的垃圾回收。但是,垃圾回收是很耗CPU的操作,降低垃圾回收的时间间隔会引起吞吐量的下降。如果要选择一个小于10000的垃圾回收间隔,必须谨慎地设置这个数字,以确保吞吐量不会受到明显的影响。 修改默认垃圾回收间隔的步骤如下: 1、定位到ArcGIS Server web service实例的目录,通常是 C:\Inetpub\wwwroot\ArcGIS\Services 2、在文本编辑器重打开web.config 3、编辑GCInterval的值 <configuration> ... <appSettings> ... <add key="GCInterval" value="1000" /> ... </configuration> 4、通过命令行的“iisreset”命令或windows服务列表的IISAdmin,重启IIS 1)通过开始-->控制面板-->管理工具-->服务打开服务控制面板 2)在本地服务面板,选择“IIS Admin Service”,点击重启链接


创建时间:2008-05-21
最近更新: 2010-06-17


原文链接
http://support.esrichina.com.cn/2008/0521/772.html

要回复问题请先登录注册