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カウンタのカテゴリにアクセスできません。
コンテナの代わりにローカルマシンで実行すると、正常に動作しています。
が、私はいくつかのことを考え出し:
docker run microsoft/windowsservercore TypePerf "\Processor(*)\% Processor Time"
は、CPU使用率を示しています。このコードですべてのパフォーマンスカテゴリを一覧表示しようとしました: PerformanceCounterCategory [] categories = PerformanceCounterCategory.GetCategories(); foreach(カテゴリのPerformanceCounterCategoryカテゴリ) { Console.WriteLine( "カテゴリ名:{0}"、category.CategoryName); } プロセッサーというカテゴリはありませんでした。なぜWindows Server 2016にそれがないのですか? – ashok