当处理能力为60%,持续5分钟时重新启动IIS

时间:2012-10-16 02:41:53

标签: iis iis-6

我不确定这是否可行,但当服务器的CPU处理能力为60%且持续时间超过5分钟时,是否有办法通过作业或服务重启IIS?如果是的话,怎么办呢?

谢谢!

1 个答案:

答案 0 :(得分:0)

IIS版本6以后您有应用程序池,它们可以基于Fixed IntervalsMemory Based Maximums进行回收。基于此我不建议您根据CPU使用情况重新启动IIS,您可能会掩盖高CPU问题。获取DebugDiag并使用高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。