When you host Web applications that use Microsoft ASP.NET on
a computer that is running Microsoft Windows Server 2003, you may experience
decreased performance. This issue may occur when you host the Web applications
in multiple application pools on a multiprocessor computer. Additionally, you
may experience one or more of the following issues when available memory is
low:
| • | You may receive exceptions of type
System.OutOfMemoryException. |
| • | You may receive the following error message when you try to
open an ASP.NET Web page: Server Application
Unavailable |
| • | The computer may stop responding. |
Back to the top
These issues occur because the Microsoft .NET Framework
common language runtime (CLR) uses the Server garbage collector (GC) on
multiprocessor computers. This is the default behavior. The Server garbage
collector is optimized for scalable throughput on multiprocessor computers. To
reduce contention and to improve garbage collector performance on
multiprocessor computers, the Server garbage collector creates one heap per
processor for parallel collections. Therefore, the Server garbage collector
consumes lots of memory when you host multiple ASP.NET worker processes. This
behavior may cause the issues that are described in the "Symptoms"
section.
Back to the top
To work around these issues, configure the .NET Framework
common language runtime to use the Workstation garbage collector. The
Workstation garbage collector is optimized to reduce garbage collector pause
times for interactive applications. Additionally, the Workstation garbage
collector creates only one heap. Therefore, the Workstation garbage collector
uses less memory when you run applications on multiprocessor computers.
To configure the .NET Framework common language runtime to use the
Workstation garbage collector, add the following code after the
<runtime> element in the Aspnet.config file. The Aspnet.config file is
located in one of the following folders:
| • | If you are running the Microsoft .NET Framework 2.0: %WINDIR%\Microsoft.NET\Framework\v2.0.50727 |
| • | If you are running the Microsoft .NET Framework 1.1: %WINDIR%\Microsoft.NET\Framework\v1.1.4322 |
<configuration>
<runtime>
<gcServer enabled="false"/>
</runtime>
</configuration>
Note The Workstation garbage collector is optimized for low latency.
Low latency is typically required for client applications. However, low latency
may cause decreased throughput after you configure the .NET Framework common
language runtime to use the Workstation garbage collector.
Back to the top
This
behavior is by design.
Back to the top
For more information about performance considerations in the
.NET Framework, visit the following Microsoft Developer Network (MSDN) Web
site:
Back to the top