2017-03-01 7 views
0

Windowsドッカーコンテナで.netアプリケーションを実行しています。私のアプリは、このコードを使用してperfのカウンタを作成しようとすると:DockerコンテナのWindows Perfカウンタ:System.InvalidOperationException:カテゴリが存在しません

未処理の例外:System.InvalidOperationExceptionが:カテゴリ が存在しない

_counter = new PerformanceCounter(categoryName, counterName, InstanceName, true); 
//My categoryname is Processor , CounterName is % Processor Time & instancename is _Total. 

を、私はこの例外を取得しています。 System.Diagnostics.PerformanceCounter..ctorで System.Diagnostics.PerformanceCounter.InitializeImpl()(文字列カテゴリ名、 文字列counterName、文字列で System.Diagnostics.PerformanceCounterLib.CounterExists(文字列のマシン、 文字列のカテゴリ、文字列のカウンター)でinstanceNameの、ブール読み取り専用)

は、これは私のコンテナのベースイメージである:https://hub.docker.com/r/microsoft/dotnet-framework/

それはそれの一部としてWindows Serverのコアを持っています。

これを解決するための助けを感謝します。これは、ここで変更する必要があるいくつかのWindows設定であるかどうかわからないです。ドッキングする人のために、&ウィンドウまたはコードでperfカウンタのカテゴリにアクセスできません。

コンテナの代わりにローカルマシンで実行すると、正常に動作しています。

+0

が、私はいくつかのことを考え出し:

docker run microsoft/windowsservercore TypePerf "\Processor(*)\% Processor Time"

は、CPU使用率を示しています。このコードですべてのパフォーマンスカテゴリを一覧表示しようとしました: PerformanceCounterCategory [] categories = PerformanceCounterCategory.GetCategories(); foreach(カテゴリのPerformanceCounterCategoryカテゴリ) { Console.WriteLine( "カテゴリ名:{0}"、category.CategoryName); } プロセッサーというカテゴリはありませんでした。なぜWindows Server 2016にそれがないのですか? – ashok

答えて

0

私が知っている限り、これらは機能しているはずです。

TypePerfを使用してこれらのカウンターをクエリできますか? Windows Serverのコアベースイメージでクエリを照会すると、自分のシステム上に表示されます。彼らはあなたが建設したコンテナで壊れていますか?それは実際にカテゴリプロセッサは、何らかの理由で、私のOSに存在しないことを意味し 1: "(PDH-CSV 4.0)","\\DF4E02B31BBD\Processor(0)\% Processor Time","\\DF4E02B31BBD\Processor(1)\% Processor Time","\\DF4E02B31BB D\Processor(_Total)\% Processor Time" "04/25/2017 09:52:34.412","50.536535","38.170669","44.353602" "04/25/2017 09:52:35.423","19.583557","2.572386","11.077971" "04/25/2017 09:52:36.425","39.207660","50.119106","44.663383" "04/25/2017 09:52:37.453","31.606146","43.765053","37.685600"

関連する問題