我们的监控解决方案目前将 WMI 用于它的一些指标,但是当负载不足时,WMI 性能非常糟糕并且经常无法及时返回,从而导致大量关于各种事物脱机或缺少指标的错误警报。
将 WMI 查询替换为调用 psapi.h、sysinfoapi.h 等中的 Windows 函数已解决了其中的大部分问题,并且返回速度提高了大约 100 倍,但是我无法找到一种方法来获得 WMI 查询 Win32_OperatingSystem.MaxNumberOfProcesses 的等效值
windows文档中的定义here指出:
MaxNumberOfProcesses
Data type: uint32
Access type: Read-only
Qualifiers: MappingStrings ("MIB.IETF|HOST-RESOURCES-MIB.hrSystemMaxProcesses")
Maximum number of process contexts the operating system can support.
The default value set by the provider is 4294967295 (0xFFFFFFFF). If there is no fixed maximum, the value should be 0 (zero). On systems that have a fixed maximum, this object can help diagnose failures that occur when the maximum is reached—if unknown, enter 4294967295 (0xFFFFFFFF).
This property is inherited from CIM_OperatingSystem.
我已经在大约 10 台不同的机器上测试了这个值,每台机器都有不同数量的 CPU 和 RAM,所有这些机器都返回了上述默认值 4294967295 (0xFFFFFFFF)。我是否应该假设 Windows 实际上只是直接发回这个值,或者我应该返回 ULONG_MAX 的值,还是有另一种方法可以找到这个值应该是什么?
我尝试了一种访问 Windows 主机 MIB 的方法,但除了使用一些外部工具而不是直接通过代码之外,找不到任何详细信息。
我目前正在使用 C 库在 GO 语言中对此进行编程。
如果有人可以提供有关如何在不使用 WMI 的情况下检索此值的见解,那将不胜感激。