小编Joh*_*est的帖子

有多少垃圾收集太多

我们的Web应用程序有数百个用户,并且(一如既往)主要由旧代码组成。

迁移到Azure后,我们可以查看和衡量比以前更多的指标。我们遇到了性能问题,我发现我们的垃圾回收正在不断进行(如“性能计数器”部分下的Web应用程序的“诊断”标签中所测量)。一分钟内,我们就能得到以下数字:

  • 90160 GEN 0垃圾收集
  • 76910第1代垃圾回收
  • 75110 GEN 2垃圾收集

这仅用于18580个HTTP请求,因此平均而言,我们有:

  • 每个请求4,85 GEN 0垃圾回收
  • 每个请求4,13 GEN 1垃圾收集
  • 每个请求4,04 GEN 2垃圾收集

即使请求数量保持不变,这些数字仍在增加(请参见图表)

GC疯狂

我的问题/评论是:

  • 这些数字是GC清除的对象数量,还是GC必须处于活动状态的次数?
  • 在这样的负载下,多少GC将被视为“正常”,非常清楚没有一个是完美的答案,但是实际上...
  • 即使请求数量保持不变,GC收集的数量又如何像这样增加呢?

约翰,非常感谢你


更新1:30/06/2018 @ 8:16 UTC + 2

在更新了应用程序见解以更紧密地监视垃圾收集之后,我发现性能大打折扣。首先,这是在GC中花费的平均时间百分比:

GC中的平均时间大约为百分之四点五

平均大约有4.5%的时间(但在此期间夜间处于非活动状态),平均大约有10%的时间偷看。然后,我想可视化应用程序处于GC模式的最长时间,而我几乎掉下了椅子:

GC中的最长时间约为99%

这可能是错误的图像。但这说明我们的代码必须等待很多时间!我们确实必须解决此问题。

.net garbage-collection azure

6
推荐指数
1
解决办法
1275
查看次数

标签 统计

.net ×1

azure ×1

garbage-collection ×1