我不确定这是否可行,但当服务器的CPU处理能力为60%且持续时间超过5分钟时,是否有办法通过作业或服务重启IIS?如果是的话,怎么办呢?
谢谢!
答案 0 :(得分:0)
IIS版本6以后您有应用程序池,它们可以基于Fixed Intervals
或Memory 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。