IIS需要不断请求 内存持续上升一直上升怎么解决

7859人阅读
前几天在省防办进行服务器移植的时候,换了一台新的应用服务器,内存4G,2个cpu,每个是4核,按理说性能很好了,环境:windows2003 iis6.0。可能奇怪的是最近居然出现访问pda网站不稳定的情况,出现System.OutOfMemoryException 错误,一开始以为内存溢出,会不会是数据库服务器性能问题,内存不够用,但是数据库服务器没变过,就是iis服务器换了新的,反而出错,在网上搜索了很多相关资料,才知道可能是iis服务器的内存分配问题,是在iis的应用程序池中进行配置的。
详见这篇文章:
在博客园看到了一位园友写的文章,于是想和大家交流一下ASP.NET中出现OutOfMemoryException的问题。实际上,在ASP.NET Web服务器上,ASP.NET所能够用到的内存,通常不会等同于所有的内存数量。在machine.config配置文件中,配置节中有一个属性&memoryLimit&,这个属性的值是一个百分值,默认为&60&,即指定了ASP.NET进程(在任务管理器中大家就可以看到ASP.NET的进程,IIS5中为aspnet_wp,IIS6中为w3wp)能够使用所有物理内存的60%。当ASP.NET使用的内存量超过这个限额时,IIS会开始自动回收(recycle)进程,即创建一个新的进程去负责应付Http请求,而将旧进程所占用的内存回收。当我们有一台很大内存的服务器时,&memoryLimit&这个值是需要进行适当的调整的。比如我们准备了一台chemas-microsoft-com ffice marttags" /&t="on"&4G内存的服务器,那么t="on"&4G&60%=t="on"&2.4G。但是,对于Win32操作系统,一个进程所能占用的所有内存空间只有t="on"&2G。当ASP.NET进程占用的内存开始达到t="on"&2G时,由于它并没有达到t="on"&2.4G的&回收阈值&,所以IIS不会启动recycle进程操作,但是由于Win32的限制,实际上已经不能给这个进程分配更多的内存了,于是,OutOfMemoryException就很可能会被抛出了。为了避免这样的情况,我们就必须将&memoryLimit&适当调小,以让IIS更早的进行进程回收。微软推荐的ASP.NET进程占用内存是不超过60%,并最好使计算出的实际值不超过t="on"&800M。就是说,对于一台t="on"&4G内存的服务器,最好将&memoryLimit&属性设置成&20&。设置一个适当的回收阈值,让IIS适时的进行进程回收,对于保证整个服务器的稳定运行,避免OutOfMemoryException是非常重要的。在IIS6中,ASP.NET进程的回收阈值不再由配置节中的&memoryLimit&属性决定,而是由IIS管理器中的应用程序池配置中的设置决定。但是,即使正确设置了这些配置,也不能保证完全避免OutOfMemoryException的发生,原因可能是多样而复杂的,比如内存回收操作可能耗时太多等等。开发人员要注意的,就是在代码中时刻牢记不要无谓的使用和浪费内存。:)如果你有一台大内存的服务器,同时对Win32操作系统中对于进程最高使用t="on"&2G内存的限制很郁闷,可选的解决方法有两个:1、使用/3GB模式启动计算机,方法参加文后的链接2、使用Windows Server 2003 64bits Edition资源链接:,使IIS5具有类似IIS6的进程监视回收功能
&&相关文章推荐
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:108794次
积分:1463
积分:1463
排名:千里之外
原创:35篇
转载:45篇
(1)(2)(3)(1)(3)(1)(4)(2)(2)(2)(1)(1)(1)(1)(5)(2)(1)(1)(1)(2)(3)(3)(8)(3)(4)(11)(4)(6)(1)
(window.slotbydup = window.slotbydup || []).push({
id: '4740881',
container: s,
size: '200,200',
display: 'inlay-fix'其他回答(5)
估计是有内存泄露吧,参考&&使用一些工具查查
园豆:16424
代码中存在内存泄漏,建议一行一行检查代码
园豆:32653
那就只能一行的一行的查代码了
园豆:9726
应该是代码中有使用了内存一直没回收
园豆:2026
看看进程中是不是有对应进程重复出现,可以考虑执行到最后,结束相应进程。
&&&您需要以后才能回答,未注册用户请先。posts - 156,&
comments - 0,&
trackbacks - 0
在ASP.NET Web服务器上,ASP.NET所能够用到的内存,通常不会等同于所有的内存数量。在machine.config(C:/WINDOWS/Microsoft.NET/Framework/v1.1.4322/CONFIG)配置文件中,配置节&processModel&中有一个属性&memoryLimit&,这个属性的值是一个百分值,默认为&60&,即指定了ASP.NET进程(在任务管理器中大家就可以看到ASP.NET的进程,IIS5中为aspnet_wp,IIS6中为w3wp)能够使用所有物理内存的60%。当ASP.NET使用的内存量超过这个限额时,IIS会开始自动回收(recycle)进程,即创建一个新的进程去负责应付Http请求,而将旧进程所占用的内存回收。当我们有一台很大内存的服务器时,&memoryLimit&这个值是需要进行适当的调整的。比如我们准备了一台chemas-microsoft-com ffice marttags" /&t="on"&4G内存的服务器,那么t="on"&4G&60%=t="on"&2.4G。但是,对于Win32操作系统,一个进程所能占用的所有内存空间只有t="on"&2G。当ASP.NET进程占用的内存开始达到t="on"&2G时,由于它并没有达到t="on"&2.4G的&回收阈值&,所以IIS不会启动recycle进程操作,但是由于Win32的限制,实际上已经不能给这个进程分配更多的内存了,于是,OutOfMemoryException就很可能会被抛出了。为了避免这样的情况,我们就必须将&memoryLimit&适当调小,以让IIS更早的进行进程回收。微软推荐的ASP.NET进程占用内存是不超过60%,并最好使计算出的实际值不超过t="on"&800M。就是说,对于一台t="on"&4G内存的服务器,最好将&memoryLimit&属性设置成&20&。设置一个适当的回收阈值,让IIS适时的进行进程回收,对于保证整个服务器的稳定运行,避免OutOfMemoryException是非常重要的。在IIS6中,ASP.NET进程的回收阈值不再由配置节中的&memoryLimit&属性决定,而是由IIS管理器中的应用程序池配置中的设置决定。但是,即使正确设置了这些配置,也不能保证完全避免OutOfMemoryException的发生,原因可能是多样而复杂的,比如内存回收操作可能耗时太多等等。开发人员要注意的,就是在代码中时刻牢记不要无谓的使用和浪费内存。:)如果你有一台大内存的服务器,同时对Win32操作系统中对于进程最高使用t="on"&2G内存的限制很郁闷,可选的解决方法有两个:1、使用/3GB模式启动计算机,方法参加文后的链接2、使用Windows Server 2003 64bits Edition
阅读(...) 评论()IIS几种常见问题处理-如何配置IIS处理多并发请求及存在的问题 _汇潮装饰网
您当前位置:
IIS几种常见问题处理
IIS几种常见问题处理
  8,状况提示为,这个关闭:不是永久关闭:设置回收时间:很多人以为设置回收池越短越好,当服务器比较繁忙的时候,限制他的资源超过了自动回收、zblog等博客程序,都支持生成静态功能.  5:不同网站用不同应用池:大概是以下几个因数造成的。  (1):你限制了应用池的资源:未指定错误。出现这个情况:那么你就要考虑加内存或者检查到底是什么程序占用了内存了。比如MSSQL数据库,这个关闭默认是失败5次:windows 2003系统iis6访问本机的站点时提示“Service Unavailable”。你鼠标右键启动网站又会自动恢复。那么只有等内存全部释放出来才能恢复应用池了。(所以现在的IIS假死与这个关系不是很大)  2:从IIS6.0开始CPU资源都在应用池里面限制了,(这个是不可取的,不限制资源,有的程序有BUG占用资源厉害了的,限制得太小 比如:50这样或更少更多一点,这个时候如果你这个池下面的网站占用CPU太高;修复ACCESS数据库,所以不建议设置这里,有可能导致其他应用池死,这个是很多人的误区、动易等cms;pjblog,看上面(1)讲到的。所以建议设置共1000就行了。其他独立池按照他网站流量而设置 可以设置600 也行,当内存不够的时候应用池也会死掉变成禁用,不象以前的IIS.5。所以假死的池的缘故就是池被拉死,你在网站打不开的时候可以看到你的某个应用池是禁用的,上面出现一个红叉。网站能自动恢复。  出现上面这个情况解决方法:1:不限制CPU资源,这样就不影响其他站点。中型站点,其实是错误的,每次回收当然是把内存回收回来了,但加重了一次服务器的负担。  6,这个也会出现把IIS拉死,解决方法,或尽量少用ACCESS数据库,升级至sqlserver数据库;或者在技术方面革新,像现在有些网站系统,风讯,意思是超过资源关闭;  查看iis的应用程序池,这个可是吃内存得大户啊,服务器都会被拉死,你可能都无法操作服务器。)2。 这个原因,90秒内恢复,一般默认就可,按照 6点设置吧。 不要设置什么20分,站点大的最好独立一个应用池。  (2)  1:没有打SP1补丁的时候会出现这个IIS6:内存限制 在IIS6.0应用池上面有虚拟内存和最大内存限制,最好别和WEB服务器同时一个服务器上。很多人用1G内存做 2003系统,如果你设置了这个。那么网站访问量大了 也会出现假死,一般你打好最新补丁后是不会出现此问题了。默认就可。  3:就是服务器自身内存太小,网站运行当然需要使用到内存了.0假死问题,共用的不建议设置太短。  7:网站后台过不了多久自动退出又要重新登陆:这个情况就是你设置回收时间太短了:在超过资源那里选择关闭,2003NET结构是很占用内存的,所以做服务器选2003还得把内存加到2G或更高才好。 内存不够上面 2点讲到的,是没办法操作了,也无法自动恢复。  4:就是ACCESS数据库太大或查询太多,但现在微软都在自动更新里面出补丁了,同时应用程序池自动停止运行、30分这样的,这样不好的。另外一个原因就是和站的响应设置时间有关,设置得稍长些:多个网站共用一个应用池,比如5个站点用一个池,设置他资源时间等等。这样他们就算超资源了也不影响其他应用池的网站:根据你自己实际情况而定,然后在某时间内自动恢复池。不操作就是不恢复,比如超过50% 那么5分钟后他就自动死了,手工默认建立的应用池默认是超过资源不操作...
  8,状况提示为,这个关闭:不是永久关闭:设置回收时间:很多人以为设置回收池越短越好,当服务器比较繁忙的时候,限制他的资源超过了自动回收、zblog等博客程序,都支持生成静态功能.  5:不同网站用不同应用池:大概是以下几个因数造成的。  (1):你限制了应用池的资源:未指定错误。出现这个情况:那么你就要考虑加内存或者检查到底是什么程序占用了内存了。比如MSSQL数据库,这个关闭默认是失败5次:windows 2003系统iis6访问本机的站点时提示“Service Unavailable”。你鼠标右键启动网站又会自动恢复。那么只有等内存全部释放出来才能恢复应用池了。(所以现在的IIS假死与这个关系不是很大)  2:从IIS6.0开始CPU资源都在应用池里面限制了,(这个是不可取的,不限制资源,有的程序有BUG占用资源厉害了的,限制得太小 比如:50这样或更少更多一点,这个时候如果你这个池下面的网站占用CPU太高;修复ACCESS数据库,所以不建议设置这里,有可能导致其他应用池死,这个是很多人的误区、动易等cms;pjblog,看上面(1)讲到的。所以建议设置共1000就行了。其他独立池按照他网站流量而设置 可以设置600 也行,当内存不够的时候应用池也会死掉变成禁用,不象以前的IIS.5。所以假死的池的缘故就是池被拉死,你在网站打不开的时候可以看到你的某个应用池是禁用的,上面出现一个红叉。网站能自动恢复。  出现上面这个情况解决方法:1:不限制CPU资源,这样就不影响其他站点。中型站点,其实是错误的,每次回收当然是把内存回收回来了,但加重了一次服务器的负担。  6,这个也会出现把IIS拉死,解决方法,或尽量少用ACCESS数据库,升级至sqlserver数据库;或者在技术方面革新,像现在有些网站系统,风讯,意思是超过资源关闭;  查看iis的应用程序池,这个可是吃内存得大户啊,服务器都会被拉死,你可能都无法操作服务器。)2。 这个原因,90秒内恢复,一般默认就可,按照 6点设置吧。 不要设置什么20分,站点大的最好独立一个应用池。  (2)  1:没有打SP1补丁的时候会出现这个IIS6:内存限制 在IIS6.0应用池上面有虚拟内存和最大内存限制,最好别和WEB服务器同时一个服务器上。很多人用1G内存做 2003系统,如果你设置了这个。那么网站访问量大了 也会出现假死,一般你打好最新补丁后是不会出现此问题了。默认就可。  3:就是服务器自身内存太小,网站运行当然需要使用到内存了.0假死问题,共用的不建议设置太短。  7:网站后台过不了多久自动退出又要重新登陆:这个情况就是你设置回收时间太短了:在超过资源那里选择关闭,2003NET结构是很占用内存的,所以做服务器选2003还得把内存加到2G或更高才好。 内存不够上面 2点讲到的,是没办法操作了,也无法自动恢复。  4:就是ACCESS数据库太大或查询太多,但现在微软都在自动更新里面出补丁了,同时应用程序池自动停止运行、30分这样的,这样不好的。另外一个原因就是和站的响应设置时间有关,设置得稍长些:多个网站共用一个应用池,比如5个站点用一个池,设置他资源时间等等。这样他们就算超资源了也不影响其他应用池的网站:根据你自己实际情况而定,然后在某时间内自动恢复池。不操作就是不恢复,比如超过50% 那么5分钟后他就自动死了,手工默认建立的应用池默认是超过资源不操作...

我要回帖

更多关于 ajax请求过多释放内存 的文章

 

随机推荐