0

これが可能かどうかはわかりませんが、サーバーの CPU 処理能力が 60% で、5 分以上続く場合に、ジョブまたはサービスを介して IIS を再起動する方法はありますか? はいの場合、どうすればこれを行うことができますか?

ありがとうございました!

4

1 に答える 1

0

Fixed IntervalsIISバージョン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をリセットするには、管理者権限が必要です。

于 2012-10-16T04:30:11.537 に答える