如何解决w3wp占用CPU和内存问题(1)


在WINDOWS2003 IIS6下,经常出现w3wp的内存占用不能及时释放,从而导致服务器响应速度很慢。

实际案例

服务器配置
至强2.8G
内存512M
SCSI硬盘 2块 软镜像)
系统 windows 2003

现在挂了一个asp.net开发的网站,访问量不大 但是出现一个,问题就是每当服务器运行2-3天后,访问网站就特别慢,重启动服务器后就正常了。

查看进程使用内存的情况,发现w3wp.exe和sqlservr.exe进程占用内存相当大 达到了170多M 每个),物理可用内存几乎用光,服务器重启动时 占用的内存很小才40多M 每个),以前网站挂在一个虚拟机上,数据库是分开挂的,从没出现这种情况。

后来,原版移植到新服务器上就出现这样的问题

还个一问题就是在SQL企业管理器中查看SQL进程发现有很多是.net 引起的进程是sleeping但是却占用了内存无法释放

采取措施:

IIS服务管理器----》应用程序池----》添加你的应用,并设置最大内存,当程序达到最大内存后其会自动重启。

将内存升级至2G,访问量比较高,一般是差不多运行24小时后就得重启,内存没耗完,W3WP进程占到一百八九十兆,SQL占了二百多兆时就得重启,不然整个站点就宕了。

解决方法一:

w3wp.exe就是你的ASP.NET应用宿主,如果你使用了大量的Session、Cache等资源,并且Session超市时间很长,那么内存占用量就比较大。应用池是为增加性能而设的一个特性,但是也消耗很大的内存。另外关掉Windows Server 2003里的大多数Service那个不用都可以关掉),也可以节省一部分内存

1.怀疑在程序中应用的CACHE,
2.CACHE中有大量的数据
3.频繁刷新CACHE
4.没有设计好CACHE的方式

解决方法二:

跟踪下SQL的调用记录,在每次往CACHE或SESSION写入大量数据时记录一下时间,看是否太过频繁

1.在win2003里asp.net的进程就是w3wp.exe

2.512M内存个人用是够用了,但是放在服务器上就有点不够用了,尤其是win2003 asp.net sql server 。尤其是sql server 他是很吃内存的,如果不控制的话,他会占光所有的物理内存只剩下几十M 倒 100M 吧)。win2003 本身就要占用150M左右。也就剩不下什么了。

3.优化asp.net程序,就向楼上的说的那样,少用或不用session cache application之类的东西,再有就是是不是有翻页的地方,翻页处理不好也是会占很多内存的。

4.限制sql的内存。企业管理器——SQL的属性一般是local)——“内存”标签。在这里看内存的设置,把最大值改成100M。


相关内容