0

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

谢谢!

4

1 回答 1

0

从 IIS 版本 6 开始,您拥有应用程序池,它们可以基于Fixed Intervals或进行回收Memory 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-10-16T04:30:11.537 回答