gpt4 book ai didi

c# - 为什么 WMI 查询有时这么慢?

转载 作者:可可西里 更新时间:2023-11-01 09:13:23 26 4
gpt4 key购买 nike

我在 .Net 中使用 System.Management 命名空间对远程服务器执行各种 WMI 查询。在我的日志中,我可以看到有时查询需要 30 或 40 秒才能完成,而有时查询会在不到一秒内完成。

当我看到这些缓慢的查询时,我尝试使用 wbemtest 连接到盒子,但它总是快速连接并执行查询。

有什么想法、指示、建议吗?

在反射器中查看 System.Management.ManagementScope 时,我确实注意到它似乎泄漏了 IWbemServices 指针。看起来这是一个 COM 接口(interface),需要对其调用 Release (Marshal.ReleaseComObject())。我不确定这是否相关。在此过程的生命周期中,我确实连接到许多不同的服务器。

最佳答案

我有相同类型的应用程序,它在所有不同类型的设备上执行多个 WMI 查询,并且我遇到了相同的行为。使用 wbemtest 有时会更快,但不一定。我还发现同一台机器上的某些查询的行为与同一台机器上的其他查询的行为不同,这仅仅是因为不同的类是查询。

有一个属于 EnumerationOptions 类的 ReturnImmediately 属性,如果您在一批中获取结果而不是通过网络枚举它们,它可能会帮助您更快地获得结果。

EnumerationOptions options = new EnumerationOptions();
options.ReturnImmediately = false;

您可以尝试一下,看看是否有帮助。我知道这不是您想听到的,但我个人认为您无能为力。您需要编写代码来解决该问题。真正的答案隐藏在 DCOM、WMI 协议(protocol)和 WMI 存储库的深处。

关于c# - 为什么 WMI 查询有时这么慢?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1423981/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com