垃圾收集模式:如果服务器上存在2个应用程序,"服务器模式"是否会让彼得付给保罗?

Rik*_*kon 6 c# clr garbage-collection load-balancing

一个2人(如果有必要,我可以分开问题来奖励单独的正确答案):

我们处于服务器模式运行的情况可能是合适的:我们在同一个服务器场上运行了2个企业级应用程序.如果我将两个应用程序的应用程序配置收集模式都置于"服务器模式"中,那么每次其他GC都会冒一个应用程序的风险吗?

网络负载均衡器是否会将流量从GC中间的机器转移(再次在服务器模式下)?

编辑 我打破了这个问题的负载平衡部分到这里:Web场的网络负载平衡器是否受GC压力影响?

Gre*_*reg 1

来自MSDN(强调已添加)

工作站是默认的 GC 模式,也是单处理器计算机上唯一可用的一种模式。工作站 GC 托管在控制台和 Windows 窗体应用程序中。它与正在运行的程序同时执行完整(第 2 代)收集,从而最大限度地减少延迟。此模式对于客户端应用程序非常有用,在客户端应用程序中,感知性能通常比原始吞吐量更重要。

服务器 GC 仅在多处理器计算机上可用。它为每个处理器创建单独的托管堆和线程,并并行执行收集。在收集期间,所有托管线程都将暂停(仅当本机调用返回时,运行本机代码的线程才会暂停)。这样,服务器GC模式可以最大化吞吐量(每秒的请求数),并随着处理器数量的增加而提高性能。具有四个或更多处理器的计算机可提供增强的性能。使用 Lync Server 应用程序 API 的所有托管代码应用程序都应使用服务器 GC。

在服务器模式下,GC 定期在所有处理器上并行运行。这可能会在收集期间占用其他应用程序的 CPU 时间。

因此,服务器模式可能会提高应用程序的性能,但可能会降低同一服务器上运行的其他应用程序的性能。这一切都非常具有推测性 - 我认为您必须进行一些基准测试来测试应用程序的响应能力和吞吐量才能确定。