1

5秒ごとにファイルのフォルダーをチェックし、見つかった場合はNLogを使用してそれに関する情報をログに記録するWindowsサービスを実行しています。

私はすでにASP.NETからの提案を試しました:成功せずに無負荷で高いCPU使用率

サービスが開始されたばかりのときは、CPU 使用率はほとんどありません。数時間後、CPU が 100% に達し、さらに待機すると、CPU グラフは次のようになります。

ウィンドウズタスクマネージャー

http://blogs.technet.com/b/sooraj-sec/archive/2011/09/14/collecting-data-using-xperf-for-high-cpu-utilization-of-a-に記載されている手順を試しましたprocess.aspxは、何が起こっているかに関する情報を生成します。

xperf の概要

どこに続くかわかりません。どんな助けでも大歓迎

4

2 に答える 2

1

この Windows サービスを作成したのは誰ですか? それはあなたですか、それともサードパーティですか?

私には、フォルダーの変更を 5 秒ごとにチェックするのは非常に怪しいと思われます。これが、この大幅な速度低下の主な理由かもしれません。

正しく実行すれば、ディレクトリの変更が発生するとすぐに取得できますが、その間にほとんど CPU 時間を消費しません。

この Microsoft の記事では、その方法を正確に説明しいます。FindFirstChangeNotificationFindNextChangeNotificationReadDirectoryChangesWWaitForMultipleObjects

于 2012-12-11T10:15:56.470 に答える
1

多くの掘り下げた後、それはこれと関係がありました:

サービスには、プロパティ Y を持つプライベート オブジェクト X がありました

サービスが開始されるたびに、X がビジネス ロジックに渡されました。そこでYが使用され、最終的に廃棄されました。ガベージ コレクターは X が破棄されるまで待機しますが、これはサービスが再起動されるまで発生しません。これにより、サービスが開始されるたびに余分な GC 待機スレッドが発生していました。

于 2013-01-16T14:55:48.517 に答える