因此,我们的托管服务提供商最近将我们的测试服务器从一个环境迁移到了另一个虚拟化环境。移动之后,测试环境上的一些事情变得非常缓慢。

比如登录远程桌面很慢,不是使用远程桌面,只是登录。还有一些平时跑得像风一样的asp.net应用,现在跑得像乌龟。在对这种放缓的原因进行了大量辩论之后,我开始调查实际问题。

最后一个有趣的发现是我在测试服务器上安装 dotTrace 时发现的。运行一个我知道会表现不佳的页面我得到了以下(高级)结果,该线程执行了这个麻烦页面的工作:

Real/wall time: 45538 ms
Thread time:    375 ms

据我所知,这意味着线程花费了很长时间没有被执行。
我自己喜欢的理论是,虚拟环境优先于其他服务器的工作而不是我的服务器。这可能是原因吗?你的想法是什么?

注意:如果您需要更多详细信息,例如实际跟踪,如果您提出要求,我可以毫无问题地分发它们。

编辑: 更多细节!
跟踪中最昂贵的调用是:

1 次调用 KeyInfoX509Data.ctor(X509Certificate, X509IncludeOption):30014 毫秒
1 次调用 SignedXml.ComputeSignature:15045 毫秒

Trace details

最佳答案

对我来说,这种差异是 IO 等待问题的尖叫声。最有可能的是磁盘或网络,尽管 CPU 也不会让我感到惊讶。

由于它似乎专门用于读取证书,因此我会调查是否有另一个 VM/服务在磁盘或网络上变得贪婪。不断下载大文件或频繁访问的数据库可能是根本原因。

可以肯定的是,您必须查看共享硬件的所有 VM 上的相应事件,可能还有到达测试盒以及从测试盒到外部的网络跟踪。这很可能只有 ISP 才能做到(因为它本质上是一个跨客户交互问题)。

根据 VM 服务器和硬件,它可能是可调整的设置,也可能不是。如果不是,您可能无能为力。

无论如何,我同意您的理论:这可能不是您的应用程序的问题,而是您的提供商的问题。如果您对 ISP 有任何影响力,我会将其踢回给他们以解决和/或调查更改提供商的问题。围绕它进行黑客攻击的成本可能远远低于让他们专门为您提供一些硬件或与可以为您提供所需服务的提供商合作。

关于.net - 分析实时 = 45 秒,但线程时间 = 0.387 秒 什么会导致这种差异?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/1940494/

10-13 06:37