• IIS服务器管理资源的几个方法和工具网摘


    这个命题,对于单独的网站拥有者,或者来说,针对单独的网站应用程序池来说,作用不是太大,但大多数玩web服务器的,拥有的可不止是一个网站一个应用程序池,特别对于iis6来说,应用程序池的分离管理,极大的提高了iis的应用效果。

    解决w3wp.exe内存占用问题

    在IIS6下,经常出现w3wp的内存占用不能及时释放,从而导致服务器响应速度很慢。
    研究了一下,可以考虑做以下配置:
    1、在IIS中对每个网站进行单独的应用程序池配置。即互相之间不影响。
    2、设置应用程序池的回收时间,默认为1720小时,可以根据情况修改。同时,设置同时运行的w3wp进程数目为1。再设置当内存或者cpu占用超过多少,就自动回收内存
    一般来说,这样就可以解决了。但仍然会出现个别网站因为程序问题,不能正确释放。

    那么,怎么样才能找到是哪一个网站的?
    1、在任务管理器中增加显示pid字段。就可以看到占用内存或者cpu最高的进程pid
    2、在命令提示符下运行iisapp -a。注意,第一次运行,会提示没有js支持,点击确定。然后再次运行就可以了。这样就可以看到pid对应的应用程序池
    3、到iis中察看该应用程序池对应的网站,就ok了

      很多管理员,特别是做虚 拟主机可能到遇到过IIS cpu100%占用,但又不知道哪些网站资源占用多,下面介绍一个方法可以查看每个web站点的资源使用情况
     
      这个方法平时不推荐使用,只是在出现问题的时候使用
     
      1,把每个站点设为独立进程
     
      打开IIS 站点属性 -- 主目录 -- 应用程序保护改成 高
     
      打开任务管理器 查看进程 你就会看到多出一些dllhost.exe进程 和他们的资源使用情况 这些就是 每个web点点的进程,但现在好不知道 哪个web站点使用那个进程
     
      2,对应web站点的dllhost.exe进程
     
      打开组建管理--- 组件服务 -- 计算机 -- 我的电脑 -- com+ 应用程序
     
      在这里,我们可以看到类似IIS-{domain.com//Root}这样的,不设为独立进程就看不到,这个就是IIS里的web站点,选择工具栏上的 状态查看
     
      你就会看到类似这样的
     
      名称运行PID
     
      IIS-{down.789game.com//Root}是1688
     
      其中 PID 就是任务管理里的 dllhost.exe得 pid值
     
      好了 现在知道每个web站点使用的dllhost.exe进程了,而在任务管理器又可以知道dllhost.exe占用的资源,那你应该知道那个网站占用资源不正常了吧!

    使用IIS Request Viewer查看当前IIS连接

    如果有自己的服务器,如果想查看当前IIS连接情况:例如有多少个请求,每个请求的动作,请求的Url,请求的IP等信息,使用微软的IIS Diagnostics Toolkit无疑是非常好的选择,利用它的IIS Request Viewer,查看当前连接以及连接状态,一目了然,非常方便好用。

     

    不过要特别注意,在第一次使用IIS Request Viewer功能时,极有可能会弹出来一个错误窗口

     

    ---------------------------
    Warning
    ---------------------------
    OpenTraceLogFile() failed (Win32 error:-2147024735 - 指定的路径无效。)
    ---------------------------
    确定 取消
    ---------------------------

    被这个问题郁闷了很久,今天终于找到解决方法了:

    在“我的电脑”属性里面的“环境变量”设置里面,设置Temp目录为一个较短的目录,例如c:\temp,就不会有这个错误。

    IIS Diagnostics Toolkit for 32-bit systems

    在2003server版本下安装后,执行程序在:C:\Program Files\IIS Resources\TraceDiag 目录下reqviewer.exe

    有人分析说,使用一段时间后,感觉还不如直接对IIS LOG进行当天的分析,因为HTTP变化很快的,或者用TCPView看也是一个方法

    Download the iisdiag.msi package now  IIS Request Viewer本站下载

    利用性能管理器查看IIS站点流量。

    先打开perfmon.msc,点一下加号,选web server,左边选一个要查看的性能,右边选站点

    IIS监控--自动重启脚本工具IISWatcher IIS自动重启vbs脚本

    功能:可以在IIS意外终止时自动重启IIS,无须登陆系统,无人职守
    条件:
    1.服务器安装过Windows Script 5.6,可以正常运行.vbs脚本。
    2.确保系统服务WindowsManagement Instrumentation 正常启动。
    将以下代码复制为 fu.vbs,放至系统盘WINNT/System32/下,注意重命名时要和“cscript //h:cscript&&cscript fu.vbs” 中的fu.vbs保持一至,否则计划任务启动时报找不到文件的错误。
    然后做计划任务,让其在系统启动时运行监控
    vbs代码:
    程序代码
    strFullName = WScript.FullName
    strWshHost = Right(strFullName, 11)
    'WScript.Echo "Default script host: " & strWshHost
    If strWshHost = "WScript.exe" Then
    Set objShell = CreateObject("WScript.Shell")
    objShell.Run _
    "%comspec% /k ""cscript //h:cscript&&cscript fu.vbs""", _
    MAXIMIZE_WINDOW
    If Err.Number  0 Then
    WScript.Echo "Error 0x" & hex(Err.Number) & " occurred. " & _
    Err.Description & ". " & VbCrLf & _
    "Could not temporarily change the default script host to Cscript."
    Err.Clear
    WScript.Quit
    End If
    WScript.Quit
    End If
    '----上面这段代码是强制到cscript命令行,一般要在cmd命令行下输入cscript *.vbs,如果直接执行vbs会用wscript打开,这样只会弹个对话框,我不喜欢,有不想每次都cscript,所以要写点额外的代码,双击后会调用一个wscript执行csript,然后再消灭自己,幸好微软的网站上提供了这个代码------------------------------------
    strComputer = "."
    Set objWMIService = GetObject("winmgmts:" _
    & "{impersonationLevel= impersonate, (Security)}!\\" & strComputer & "\root\cimv2")
    Set colMonitoredEvents = objWMIService.ExecNotificationQuery _
    ("Select * from __instancecreationevent where TargetInstance isa'Win32_NTLogEvent' and TargetInstance.EventCode = '7031' ")
    Wscript.Echo "开始监视iis于 "&now
    Do
    Set objLatestEvent = colMonitoredEvents.NextEvent
    Wscript.Echo "重新启动iis "&now
    Set objShell = CreateObject("WScript.Shell")
    objShell.Run "%COMSPEC% /c IISRESET.EXE",,1
    '------核心程序
    whichfile=("iisresetlog.htm")
    set fso=createobject("Scripting.FileSystemObject")
    if Not fso.FileExists(whichfile) then
    iomode=2 : create=true
    'Set MyFile = fso.CreateTextFile(whichfile,True)
    else
    iomode=8 : create=false
    'Set MyFile = fso.CreateTextFile(whichfile)
    end if
    set MyFile = fso.OpenTextFile(whichfile,iomode,create)
    'MyFile.writeLine("事件发生于 "&now&" 重启iis成功"&vbctrf)
    if create=true then
    MyFile.WriteLine ""
    MyFile.WriteLine ""
    MyFile.WriteLine ""
    MyFile.WriteLine ""
    MyFile.WriteLine ""
    MyFile.WriteLine ""
    end if
    MyFile.WriteLine " iis重启时间: " &now& ""
    'MyFile.WriteLine " 是否成功: 是 "
    MyFile.WriteLine "
    "
    MyFile.WriteLine " "
    MyFile.Close
    set fso=nothing
    Loop
    '-----用fso记录iis 重启日志。
    注意:TargetInstance.EventCode = '7031' 这段代码控制了在什么情况下重启IIS,7031是系统的事件 ID代号,即当系统日志出现7031这样的事件时重启IIS。
    下面是系统7031事件描述:IIS Admin Service 服务意外地终止,这种情况已经出现了 1 次。以下的修正操作将在 1 毫秒内运行: 运行配置的故障恢复程序。
    同样的道理,可以根据不同的事件ID触发此脚本,修改objShell.Run "%COMSPEC% /c IISRESET.EXE",,1 这一行代码,可以执行任何win32所支持的程序,即可以根据任意事件触发执行任意的程序,那样用途更广了。
    另:
    %comspec%打开一个命令行窗口。%comspec% 是一个指向当前命令行外壳的环境变量。通过使用 %comspec%,您不必担心命令行外壳是 cmd.exe 还是 command.exe;%comspec% 会自动选择正确的一个。
    /k 在调用 Dir 命令后,确保窗口始终保持打开。这就是 /k 参数的用处。如果我们想要确保命令窗口会在 Dir 命令调用完成后被自动关闭,应该将 /k (keep) 修改为 /c (close)。

    砺青IIS监控器IISWatcher v2.1  IISWatcher2.1.rar下载

    适用于虚拟主机提供商用于排查个别有问题的网站,最大特点是可以监控每一个WEB站点的资源使用状态,包括:CPU使用率,总的CPU时间,内存,最大内存,线程数,模块数等

  • 相关阅读:
    实现自我的互联网时代(2020时事与科技前沿思辨(博雅课)课程论文)
    学不会OO的第四单元反思
    学不会OO的第三单无反思(尽管刚才让JML爪8但是JUnit真的是个好东西
    学不会OO的第二单元反思
    学不会OO的第一单元反思
    2020北航面向对象第四单元总结
    2020北航面向对象第三单元总结
    2020北航面向对象第二单元总结
    2020北航面向对象第一单元总结
    提问回顾与个人总结
  • 原文地址:https://www.cnblogs.com/BlogNetSpace/p/1379880.html
Copyright © 2020-2023  润新知