【发布时间】:2015-10-29 07:30:09
【问题描述】:
调试我们的一台服务器使用的 CPU 比预期更多的性能问题我目前专注于 GC,因为 GC 中的 % 时间似乎在 30 左右,我觉得这太高了。
我还注意到一种模式,即 CPU 使用率缓慢上升,直到每晚午夜回收池。 LOH 的大小也逐渐增加(我怀疑这是因为我们缓存了用户信息),这让我认为 LOH 的增长是 CPU 的原因,而 GC 中的 % 正在逐渐增加,直到回收。我还注意到很多 gen2 集合。
看这张图有两件事让我印象深刻:
1) 这种 GC 模式正常吗?我认为第 2 代的收集次数要少得多。
2) 17:40 发生了什么?服务器有两个正在运行的应用程序池(一个只是一个虚拟网站,一个负责所有工作),对我来说,它们看起来像是在 17:40 切换位置,没有回收或似乎发生了任何事情。
GC 和 alloc B/sec 中的时间以一种奇怪但上升的模式跟随:
【问题讨论】:
-
GC 中的 % 是否也呈上升趋势?它隐藏在这里。
-
因为 GC 中的时间似乎与这里的分配率密切相关。看起来完全健康。从图表中我看不到 LOH 大小的增加,但我接受你的工作。您可以分析应用程序并查看使用 CPU 的内容吗? PerfView 可以非侵入式地做到这一点。确保设置符号。
-
我没有使用 PerfView 的经验,但我会尝试一下。感谢您的建议。
标签: .net debugging iis memory garbage-collection