【问题标题】:Windows Perf Counters on Docker containers : System.InvalidOperationException: Category does not existDocker 容器上的 Windows 性能计数器:System.InvalidOperationException:类别不存在
【发布时间】:2017-07-21 09:37:27
【问题描述】:

我正在使用 Docker Desktop for Windows 在 Windows Docker 容器中运行 .net 应用程序。当我的应用尝试使用此代码创建性能计数器时:

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

我遇到了这个异常:

未处理的异常:System.InvalidOperationException:类别确实 不存在。在 System.Diagnostics.PerformanceCounterLib.CounterExists(字符串机, 字符串类别,字符串计数器)在 System.Diagnostics.PerformanceCounter.InitializeImpl() 在 System.Diagnostics.PerformanceCounter..ctor(字符串类别名称, String counterName, String instanceName, Boolean readOnly)

这是我的容器的基础镜像:https://hub.docker.com/r/microsoft/dotnet-framework/

它包含 Windows Server 核心。

感谢任何帮助解决此问题。我不确定这是否只是我需要在此处更改的一些 Windows 设置,还是因为 docker & windows 或我的代码无法访问性能计数器的类别。

当我在本地机器而不是容器中运行它时,它工作得非常好。

【问题讨论】:

  • 我发现了几件事: 1. 这实际上意味着处理器类别由于某种原因在我的操作系统中不存在。当我尝试通过此代码列出所有性能类别时: PerformanceCounterCategory[] categories = PerformanceCounterCategory.GetCategories(); foreach (PerformanceCounterCategory category in categories) { Console.WriteLine("Category name: {0}", category.CategoryName);没有一个叫做处理器的类别。为什么 Windows Server 2016 中缺少它?

标签: performancecounter docker-for-windows docker-desktop docker


【解决方案1】:

据我所知,这些应该可以工作。

您可以尝试使用 TypePerf 来查询这些计数器吗?当我在 Windows Server 核心基础映像上查询它们时,我会在我的系统上看到它们。它们会破坏您构建的容器吗?

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

是否显示 CPU 使用率: "(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"

【讨论】:

    猜你喜欢
    • 2011-12-31
    • 2010-09-13
    • 2015-02-16
    • 2019-12-15
    • 1970-01-01
    • 1970-01-01
    • 2023-03-14
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多