2

我们有一种情况,ASP.NET 工作进程间歇性地使用 100% 的 CPU。在分析 perfmon 结果和内存转储后,我们看到垃圾收集器正在大量使用 CPU 时间的迹象。

使用 WinDbg,我们看到 LOH 充满了包含 HTML 页面的完整页面的字符串。字符串的!gcroot通常找不到任何根。问题是这在 ASP.NET 应用程序上是正常的还是对于我们构建网站的方式更具体?

需要注意的是,这个 ASP.NET 网站是一个基于 Sitecore 的网站。我们知道 Sitecore 会缓存 HTML 输出,但据我了解,Sitecore 不会缓存整个页面,而只会缓存渲染级别。

4

1 回答 1

1

完整的 html 页面在内存中是正常的,因为特别是当页面缓冲区打开时(默认情况下),asp.net 在内存中构建页面,并在页面完全渲染后发送它到浏览器。

现在在某些情况下,我看到程序员使用页面的渲染功能来获取该 html,然后搜索和替换一些字符串。所以在这种情况下,也可以在内存中找到完整的 html 页面。

现在,如果您看到您的 cpu 为 100%,请检查是否出现崩溃。如果不是,那么您可能有一些繁重的计算,或者很多linq 查询,或类似的东西。

于 2013-02-22T01:46:13.873 回答