2011年1月3日 星期一

w3wp.exe [3492]

這篇文章找好久了,總算看到些解決方式..
----
狀態:引發溢位
----
原文
----
w3wp.exe占内存CPU问题 WIN2003 IIS6.0假死现象解决方案

打开IIS 你就会看到应用程序池.默认只有一个应用程序池.你查看应用程序池的属性.会发现他的回收时间.默认多达.1740分钟.就是说.需要在1740分钟后才回收此应用程序池.如果在这个时间内.达到请求的最高限制.那么就会出现ASP假死的情况.这个就是大型网站出现假死的情况.反而.小型网站确不会出现这样的情况.因为他请求少.流量少.还没达到限制数量.

当然要看你的服务器上拉了多少个网站而定.以下是我的解决方法.

单个网站解决方法.;

(很简单.把应用程序池回收时间缩短到300-600分钟.其间回收过程中.需要占用一点CPU资源.没办法.为了稳定性.再把回收时间设为凌晨5点)

多网站解决方法.

我的服务器目前拉了70个网站左右.我新建六个应用程序池.把每个池回收时间缩小到300分钟.然后再分配每个池10个网站左右(这个分配是要求你的网站访问量所定)如果某个网站.访问量大.就单独给他一个程序池.但是这样做的后果就是需要大内存.一个池现在占用我120M内存左右.反正内存大.没关系.}'
多网站如何分配应用程序池??.打开IIS--查看你要分配的网站属性..查看主目录--在下面你就会看到应用程序池了.分配一个就行了.

以上是我的临床试验.服务器现在稳定的运行中.本来几乎一天就停一次.要我重起IIS才行.

在开始--程序--管理工具à信息服务管理器-à打开应用程序池IIS 你就会看到应用程序池.默认只有一个应用程序池.你查看应用程序池的属性.会发现他的回收时间.默认多达.1740分钟.就是说.需要在1740分钟后才回收此应用程序池.如果在这个时间内.达到请求的最高限制.那么就会出现ASP假死的情况.这个就是大型网站出现假死的情况.反而.小型网站确不会出现这样的情况.因为他请求少.流量少.还没达到限制数量.
解决方法:把应用程序池回收时间缩短到300-600分钟.其间回收过程中.需要占用一点CPU资源.没办法.为了稳定性.再把回收时间设为凌晨5点

WIN2003 IIS6.0假死现象的分析
不少朋友在做网络管理中遇到一些网站系统经常会出现一段时间网速很慢,直到不能进入系统.本人也为这个事情困惑了很久.后来经过几天的系统观察,对WIN2003系统的分析跟踪发现在是应用程序池的问题,后来设置了一下问题就解决了,现在提出供大家分析.

一大型网站出现WIN2003 IIS6.0假死现象的分析
. 关于一大型网站出现假死现象的分析(WIN2003 IIS6.0无故停止的问题)
系统环境:系统应用环境是:操作系统平台是Windows Server 2003
后台数据库是ORACLE9I
问题:系统采用(B/S结构)经常会出现一段时间网速很慢,直到不能进入系统。管理人员不得不重新启动机子,才能使系统正常工作。
分析:根据实地观察发现在运行 Windows Server 2003 的计算机上,默认的 ASP 辅助进程为 w3wp.exe。(w3wp.exe 为ASP.NET的进程)w3wp.exe 进程通常在 NETWORK SERVICE 帐户下运行,但可将它配置为在 SYSTEM SERVICE 或用户帐户下运行,w3wp.exe这个进程占用大量的CPU和内存,出现内存溢出,这时会出现ASP假死的情况也就是WIN2003 IIS6.0无故停止
Windows Server 2003 的计算机上的 ASP Web 应用程序W3wp.exe(多工作进程)将在访问www服务时候启动。通过IIS6.0新增的“应用程序池”可以对此进行调度,根据调换Web园的数量可以限定该池的工作进程数量,经过测试同属于一个池中的程序,服务器将在访问每个虚拟目录或站点时启动一个W3wp.exe进程。直至达到设置的Web园最大数量
根据站点的命中频率我们设置回收进程的时间,默认为20分钟,根据访问量具体限定
在站点内存耗费过大时及时回收内存,可以有效的避免溢出

解决w3wp.exe占用内存和CPU的问题(2003系统)

在2003系统IIS6下,经常出现w3wp.exe的内存占用不能及时释放和CPU占用居高不下的问题,从而导致服务器响应速度很慢。怎样才能找出是哪一个站点出问题呢?

首先给每个站点都建一个应用程序池,这样便于找出问题出在哪一个站点上!

接下来就简单了

1、在任务管理器中增加显示pid字段。就可以看到占用内存或者cpu最高的进程pid!

2、在命令提示符下运行iisapp -a。注意,第一次运行,会提示什么“此脚本不能与 wscript 工作”,点击确定,接着会弹出一个对话框,是英文的,应该是提示你装一个什么来着,忘了,没关系,点确定就可以了。然后再次运行iisapp -a就可以了。这样就可以看到pid对应的应用程序池的名称了!

3、到iis中察看该应用程序池对应的网站,就可以了!然后真对站点排除错误!
(顺便说一下,如果运行后出现 error - no no results 这样的提示,说明你的站点没有开启或还没有被访问过!)


下面详细介绍一下 iisapp 的语法!
语法
iisapp [a/ AppPoolName | /p AppPoolID]

参数
/a AppPoolName

指定特定应用程序池的名称。(可选项)

/p AppPoolID

按 ID 号指定应用程序池。(可选项)

注释
• 如果未指定应用程序池名或 ID,则 iisapp 列出所有运行应用程序。

• 仅当使用 /s 时,才可使用 /u 和 /p 命令行选项。必须同时使用 /p 和 /u 才能提供用户密码。

• Iisext.vbs 执行 IIS 管理器中可用的相同操作。可使用任何一种工具管理 IIS 网站。

• 发出命令的计算机必须正在运行 Windows XP 或 Windows Server 2003 操作系统。用户必须是命令所影响的计算机上的 Administrators 组成员。

• 命令所影响的计算机必须是运行带有 Internet 信息服务 (IIS) 6.0 的 Windows Server 2003 的服务器。

沒有留言:

張貼留言