我正在使用 WMI 来监控数百台主机。我大约每 5 秒轮询一次 CPU 使用率。我正在使用 C# 的线程池来运行当前计划的适当 WMI 查询。通常,运行查询的线程不超过 30 个左右。有时会有 16 秒的间隔,而不是 5 秒,没有可见的 CPU 使用率。由于 CPU 未得到充分利用,我怀疑瓶颈在 RPC 或 TCP/IP 堆栈中。但是我认为它不是 TCP/IP 堆栈,因为连接是永久保持打开的。所以我怀疑瓶颈在监控机器上的 RPC 中。
我可以在监控机器上进行任何 RPC 调整吗?
更新 1:
在发布之前,我已经进行了一些 .NET 调整。我已经调整了ThreadPool
和ThreadPool.SetMinThreads(200, 200)
调用ThreadPool.SetMaxThreads(300,300)
。我正在使用这些Task
对象,所有这些都是用TaskCreationOptions.LongRunning | TaskCreationOptions.PreferFairness
.