2010-12-01 15 views
-1

実行中のサーバーマシンで高いCPU(50%〜70%)を使用するVB.NETリスナーに問題があります。リスナーはスレッドのコンセプトを使用しており、FileSystemWatcherクラスを使用して、1つの共通の場所を指すファイルの名前の変更を監視しています。どちらも、1日中実行されるコンソールアプリケーションとスケジュールされたジョブです。このFileSystemWatcherクラスでCPU使用率を制御する方法を教えてください。高いCPU使用率 - VB.NET

+1

時間がどこにあるのかを調べるためにプロファイラを実行しましたか? –

答えて

1

これは、実行しているコードによって異なる場合があります。

たとえば、間隔が10msのタイマーが2分間隔で動作し、各タイマー間隔で多くのチェックを行う場合は、何もしないために多くのCPUがかかるでしょう。

複数のスレッドを使用していて、2つ目がロックを解除するのを待っているループ(Monitor.TryEnter())の場合、もう一度これが余分なCPUを占有している可能性があります。これを避けるには、待機中のスレッドをMonitor.Wait()に入れ、ビジースレッドが終了したらMonitor.Pulse()を実行します。

上記の非常に一般的なアドバイスとは別に、コードやプロフィール結果の重要な部分を投稿すると、さらに役立つかもしれません。

私たちはRedGates ANTS Profilerを使用していますが(コストは無料ですが)、良い結果が得られます。私は比較するために他のものを使用していません(私はRedGateと提携していません)他の人はより良いかもしれません。

このうちのいくつかが役立つことを願っています。