最近网站一个Web应用程序运行得不是很好,时常卡住导致w3wp.exe应用程序池CPU消耗过高,严重影响服务器性能,而一旦卡住,该Web应用程序就会访问失败,且不能自行恢复,需要手动重启IIS才行,这严重影响了网站的正常运转,因为不可能人工时刻盯着服务器的CPU消耗,因此需要解决一下这个问题。修改Web应用程序不现实,我想到的是在服务器端运行一个VB监控软件,采用软件监控+强行重启IIS的方法,这个方法实施起来比较简单。
监控网站打开状态
vb监控网站打开状态的方法有几种,常用的是使用XMLHTTP来打开网页,然后判断成功与否。核心代码如下:
Dim html As String
Dim XMLObject As Object
Set XMLObject = CreateObject("Microsoft.XMLHTTP")
XMLObject.Open "GET", "http://www.webkaka.com/", False
XMLObject.send
html = XMLObject.responseText
不过上述代码的局限性比较明显,它不能获得网页的header(标头)信息,为了能更灵活的应用监控软件,我使用了vb的Inet控件,下面是编程过程。
1、添加Inet控件
添加部件“Microsoft Internet Transfer Control 6.0”,
添加部件Inet
2、编写监控程序
使用Inet打开网页的程序比较简单,可以通过获得网页的header信息,然后从状态码来判断网页打开状态,代码如下:
'通过Inet控件获得网页header信息
Inet1.OpenURL “http://www.webkaka.com/” '用inet连接网页
If InStr(1, Inet1.GetHeader, "200") > 0 Then '获得header信息,判断页头是否包含字符“200”
MsgBox "网页可以打开!"
Else
MsgBox "网页不能打开!"
End If
也可以先获得网页的html源文件,然后判断源文件是否包含某特定的字符串,代码如下:
'获得网页HTML代码
Dim szHtml As String
szHtml = Inet1.OpenURL( “http://www.webkaka.com/” ) '用inet连接网页
If InStr(1,szHtml,"卡卡测速网") > 0 Then '判断网页是否包含某特定字符串
MsgBox "网页可以打开!"
Else
MsgBox "网页不能打开!"
End If
使用vb Inet控件编写监控网页打开状态的核心代码就是这样了。
本文旨在介绍vb Inet控件的使用,我们可以在此基础上编写其他的行为,例如可以遇到网页打不开时重启服务器。
需要注意的是,使用vb Inet控件编写的监控软件,在服务器上运行时,要先下载MSINET.OCX这个文件,放到C:\WINDOWS\system32文件夹下,否则运行会出错。
◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。