同步垃圾收集是否会导致性能频繁出现?

时间:2012-01-20 14:30:05

标签: .net c#-4.0 garbage-collection jmeter

我正在测试IIS中托管的非常简单的.NET Web服务。 Web服务只是执行简单计算并返回整数的单个方法。我已在单独的服务器上配置JMeter,以使用500个线程测试此方法,每个线程循环500次。因此,该方法被调用250,000次,并且我绘制了吞吐量和响应时间。

因此,我的图表包含250,000个点,显示吞吐量和响应时间。但是,吞吐量和响应时间图表都显示数据集中的高度规则异常值。在非常规的时间间隔内,吞吐量的下降非常短暂,响应时间也相应增加。在每张图表的250,000点中,有50到75个这样的异常值。

虽然这个比例非常小,但对整体表现的影响不是问题,我想了解异常值的原因是什么。到目前为止,我唯一的理论是asp.net中的同步垃圾收集导致应用程序定期暂停几分之一秒。

我想知道垃圾收集器是否可能导致吞吐量下降或响应时间增加?

如果没有,可能存在一些操作系统问题,但这里不需要推测性答案。

2 个答案:

答案 0 :(得分:2)

另一个选择是IIS上的应用程序池配置为回收,如果它需要超过X MB的私有内存,或者有超过Y个请求,甚至每Z分钟回收一次......

在这种情况下,您可能看到的是应用程序池的回收。

答案 1 :(得分:0)

是的,垃圾收集总是会导致进程中所有线程的执行暂停。此线程可以更短或更长,具体取决于您使用的垃圾收集模式以及升级到后代的已分配内存量。

为了量化您在垃圾收集中花费的时间,我建议使用PerfView来收集和分析垃圾收集指标。

您必须测量GC时间与处理时间,以确定其是否显着。

相关问题