我在一个小型集群上使用一种负载均衡器,它能够在零持续时间请求(即工作节点立即满足的请求)上达到 >2000rps。 但是,一旦请求不再是零持续时间并开始花费 1 毫秒,性能立即下降 >10 倍。双向传输的数据相同,大小约为 2kb。 这肯定与集群的饱和度或网络吞吐量无关,因为 200rps 的 1ms 请求是一个非常小的负载,而网络是 10Gbit。此外,负载均衡器和工作节点上的 CPU 负载仅为 2-5%。
我想知道这是否可能与操作系统调度程序或操作系统网络堆栈的某些病态行为有关(即对于非常短的交互有一些特殊情况的行为)。
我如何诊断原因?哪些性能计数器值得关注?使用什么工具或方法?
(以防万一有人知道我的特定问题的答案,我说的是 MS HPC Server 2008 R2 的“WCF Broker”,它通过 Hyper-V 在 Windows Server 2008 R2 上运行)
最佳答案
您可以做的一件事是使用 ETW 跟踪来尝试了解节点在您的 WCF 作业运行时正在做什么。在 HPC 服务器上,我有时会 clusrun xperf 来收集所有或特定节点上的痕迹。有许多工具可用于分析 ETW 跟踪,包括 xperf 本身。我没有使用 HPC SOA (WCF) 做过任何认真的工作,但我确实编写了一个简单的 WCF raytracer 应用程序,然后使用 xperf 在几个节点上对其进行了分析。
关于windows - 诊断一个集群软件的病态行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3446561/