IT运维管理,创造商业价值!
中国IT运维网首页 | 资讯中心 | 运维管理 | 信息安全 | CIO视界 | 云计算 | 最佳案例 | 运维资源 | 专题策划 | 知识库 | 论坛

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

2009年01月11日
/

在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。


共2页: 1 [2] 下一页
 第 1 页:  第 2 页:解决方法二
发表评论请到:http://bbs.cnitom.com

相关阅读

图文热点

邮件服务器基础:邮件服务相关协议三
邮件服务器基础:邮件服务相关协议三前两篇文章讲述了一些协议,本文接着第二篇文章讲述一下MIME,然后讲一下邮件服务...
邮件服务器基础:邮件服务相关协议一
邮件服务器基础:邮件服务相关协议一想要掌握邮件服务器,必须从最基础的相关协议入手,对于很多新手来说,种类繁多的...

本类热点