最近在查站点CPU过高的问题。首先存在的一个问题就是:如何定位哪一个网站占用CPU过高。查了资料,整理如下:
基本知识(IIS6)
一个W3WP进程不是对应一个站点,而是对应一个IIS应用程序池。所以如果我们要观察具体那一个站点占用了多少CUP,多少内存,就必须为每一个站点独立分配一个应用程序池。(对于应用程序池的应用还有很多好处,以后再具体介绍)
IIS6配置应用程序池
从图中可以看到,有5个website,3个apppool。当所有网站都在运行,看到的就是3个w3wp进程,而不是5个w3wp。
在一般的部署中,都存在一个IIS运行多个web站点的情况,特别是对于小app应用更是如此。所以如果有些应用频繁的,还是单独一个应用程序池。这样也方便查找问题。
2个w3wp, 怎么知道那个是我们要找的呢?
W3WP与应用程序池
cmd运行如下命令:(注意 C:\WINDOWS\system32 这是目录,这个是IIS6的命令)
C:\WINDOWS\system32>cscript iisapp.vbs
或
iisapp -a
PID与CPU
可以看到PID 以及对应的 app-pool的相关信息。这样我只要找到PID的进程就可以查看信息了
在任务管理器中就可以看到相关performance信息了
整个过程的推导公式如下: (*^__^*)
IIS6 => app-pool => PID => CPU%
基本上解决方法已经有了,等fuhua具体的观察结果,有空再做进一步的分析。
--=阅读快乐=--
欢迎访问我的新鱼塘 www.pumaboyd.com