これが可能かどうかはわかりませんが、サーバーの CPU 処理能力が 60% で、5 分以上続く場合に、ジョブまたはサービスを介して IIS を再起動する方法はありますか? はいの場合、どうすればこれを行うことができますか?
ありがとうございました!
Fixed Intervals
IISバージョン6以降には、アプリケーションプールがあり、またはに基づいてリサイクルできますMemory Based Maximums
。これに基づいて、CPU使用率に基づいてIISを再起動することはお勧めしません。文字通り、高CPUの問題を隠している可能性があります。DebugDiagを取得し、High-CPUルールを使用して、CPUが60%を超えたときにメモリダンプを取得します。
あなたの質問に答えるには:
以下のコードを使用してCPUを監視します(C#でCPU使用率を取得する方法から取得しますか? -そのスレッドには、使用法により適している可能性のある他の例、つまり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をリセットするには、管理者権限が必要です。