内容显示页
 
类别:服务器相关 | 浏览(216) | 2007-9-28 18:10:22

服务器有时会因为一个站点占用CPU过高而导致所在的应用程序池关闭或机器运行非常缓慢,

想解决这个问题就得找出是哪个网站占用CPU比较大,我的想法是对每个站点进行监控,但当前水平本人还无法实现这个功能(应该很简单,使用wmi实现),

我以前的处理方法是:如果服务器只有一个应用程序池的话,先把他分为多个,然后看哪个进程CPU占用高,一步一步的合并或拆分应用程序池,最终找到那个占CPU高的。理论上说起来容易,但真正实现起来就不那么容易了。

实现过程及原理:IIS6可以的所有配置文件都放在“C:\WINDOWS\system32\inetsrv\MetaBase.xml”里,所以只要对这个文件进行处理就可以了,但是个文本文件,所以可以说成:对这个文本文件进行处理就可以了,我们用Emeditor文件处理软件来处理,因为他支持正则表达式及宏,是本人处理文本之首选。

1.  1个应用程序池分为N的方法:从头找,找到前100个都替换成test001,前101-200个替换成test002.......这样便实现了

例: 

for i=1 to 100
	if i<=4 then 
		document.selection.Replace "AppPoolId=" & Chr(34) & "test002" & Chr(34),"AppPoolId=" & Chr(34) & "test001" & Chr(34),eeFindNext
	end if
	if i>4 and i<=8 then 
		document.selection.Replace "AppPoolId=" & Chr(34) & "test002" & Chr(34),"AppPoolId=" & Chr(34) & "test003" & Chr(34),eeFindNext
	end if
	if i>8 and i<=12 then 
		document.selection.Replace "AppPoolId=" & Chr(34) & "test002" & Chr(34),"AppPoolId=" & Chr(34) & "test004" & Chr(34),eeFindNext
	end if
next

2. N个应用程序池合并为1个的方法:用正则匹配,所有符合条件的替换成test001等

例:

document.selection.Replace "AppPoolId=" & Chr(34) & "(test001|test002|test003|test004)" & Chr(34),"AppPoolId=" & Chr(34) & "test005" & Chr(34),eeFindNext Or eeReplaceAll Or eeFindReplaceRegExp


以上两例可以命名为1-to-n.vbee 和n-to-1.vbee加入到Emeditor 宏里,备用,具体使用时根据情况还得修改。

以上提供的只是实现的方法如果真要操作的话,您得考虑到尽量不影响用户使用的情况下进行,本人进行所有改动操作一般都在2分钟以内,如果条件允许可以在一分钟内完成。因为宏是写好的,只要把IIS停掉,然后对文件进行宏处理就可以了,停IIS的时间比较长点。为了安全起见,我们每次对IIS6配置文件进行处理前得先备份一下,我用以下代码来完成

set year=%date:~0,4%
set month1=%date:~5,1%
set month2=%date:~6,1%
set day1=%date:~8,1%
set day2=%date:~9,1%
set tm1=%time:~0,2%
set tm2=%time:~3,2%
set tm3=%time:~6,2%
copy C:\WINDOWS\system32\inetsrv\MetaBase.xml %year%%month1%%month2%%day1%%day2%%tm1%%tm2%%tm2%MetaBase.xml
"C:\Program Files\EmEditor\EmEditor.exe" C:\WINDOWS\system32\inetsrv\MetaBase.xml

这段是dos批处理代码,执行的操作是:在IIS6停止以后把IIS6的配置文件COPY出来,命名为年月日时分秒这样的格式,以做备份,然后再用Emeditor编辑软件打开IIS6配置文件。这样写后操作基本上都是程序来批量实现了,效率非常高。打开IIS6的配置文件后选择宏下边的1-to-n.或n-to-1.来完成修改操作。

OK讲完了。把我都说晕了,因为不同水平的人看都可能会有各种问题,我也不可能写的非常细,所以,挑自己能看懂的看吧。如果您受不了这个,我建议您学wmi自己开发程序来实现。应该比这个快,也实用。我只能有空再研究wmi了。

最后强烈推荐学习:VBS 正则表达式 Emeditor Emeditor宏
原创作者:柳永法(yongfa365)'Blog


引用本页地址:http://www.yongfa365.com/item/IIS6-Application-Pool-Nto1-1toN-yongfa365.html
 
 
相关链接
 
网友评论:
姓名: 记住我
网址:
邮箱:
内容:
验证码:  验证码图片 看不清? 换张图试试
 
     
 
 
文章分类
 
 
专题(3)
 
.Net + C#(41)
 
ASP+VBS(153)
 
 
 
Linux(10)
 
 
 
web 2.0(24)
 
 
 
 
 
心程(59)
 
生活(80)
 
 
     

Power by :柳永法(yongfa365)'Blog | Model by :hibaidu | CSS by:众网友 | 京ICP备07011491号  QQ:64049027  E-mail:64049027qq.com

本空间赞助商:北京中科兴联信息技术有限公司