【问题标题】:Restart IIS when processing power is 60% for 5 mins处理能力为 60% 时重启 IIS 5 分钟
【发布时间】:2012-10-16 02:41:53
【问题描述】:

我不确定这是否可能,但是当服务器的 CPU 处理能力为 60% 并且持续时间超过 5 分钟时,有没有办法通过作业或服务重新启动 IIS?如果是,如何做到这一点?

谢谢!

【问题讨论】:

    标签: iis iis-6


    【解决方案1】:

    从 IIS 版本 6 开始,您拥有应用程序池,它们可以基于 Fixed IntervalsMemory Based Maximums 进行回收。基于此,我不建议您根据 CPU 使用情况重新启动 IIS,您可能会掩盖高 CPU 问题。退出 DebugDiag 并使用 High-CPU 规则并在 CPU 超过 60% 时进行内存转储。

    回答你的问题:

    使用下面的代码来监控 CPU(取自 How to get the CPU Usage in C#? - 该线程中还有其他示例可能更适合您的使用,即带有 Timer_Ticks 的示例):

    PerformanceCounter cpuCounter;
    PerformanceCounter ramCounter;
    
    cpuCounter = new PerformanceCounter();
    
    cpuCounter.CategoryName = "Processor";
    cpuCounter.CounterName = "% Processor Time";
    cpuCounter.InstanceName = "_Total";
    
    ramCounter = new PerformanceCounter("Memory", "Available MBytes");
    
    
    public string getCurrentCpuUsage(){
                return cpuCounter.NextValue()+"%";
    }
    
    public string getAvailableRAM(){
                return ramCounter.NextValue()+"MB";
    } 
    

    然后在 5 分钟后你可以重置 IIS:

    System.Diagnostics.Process process = new System.Diagnostics.Process();
    //process.StartInfo.FileName = @"C:\WINDOWS\system32\iisreset.exe";
    process.StartInfo.FileName = "cmd";
    process.StartInfo.Arguments = "/C iisreset /STOP";
    process.StartInfo.UseShellExecute = false;
    process.StartInfo.CreateNoWindow = true;
    process.StartInfo.RedirectStandardError = true;
    process.StartInfo.RedirectStandardOutput = true;
    process.Start();
    process.WaitForExit();
    

    提示:您需要管理员权限才能重置 IIS。

    【讨论】:

      猜你喜欢
      • 2012-04-06
      • 1970-01-01
      • 2017-05-03
      • 2022-11-15
      • 2023-03-26
      • 2022-11-10
      • 2020-01-29
      • 2013-08-15
      • 1970-01-01
      相关资源
      最近更新 更多