FIX: A gradual reduction in system performance occurs when you run a .NET Framework 1.1 application that uses COM+ components and the common language runtime

Article translations Article translations
Article ID: 904646 - View products that this article applies to.
This article has been archived. It is offered "as is" and will no longer be updated.
Expand all | Collapse all

On This Page

SYMPTOMS

When you run a Microsoft .NET Framework 1.1 application that uses Microsoft COM+ components, you may notice a gradual reduction in system performance.

This problem occurs when the following conditions are true:
  • The application uses the common language runtime (CLR).
  • The application makes extensive use of Microsoft Component Object Model (COM) objects that are hosted on a remote server.
Note If you monitor CPU utilization, you notice the following behavior:
  • CPU utilization on the server increases approximately every two minutes.
  • The increase in CPU utilization appears to be associated with the Svchost.exe process that hosts the Rpcss service.
  • Increased memory consumption is associated with the process that hosts the COM objects.

CAUSE

This problem occurs because of the way that the .NET Framework 1.1 manages references to COM objects. In certain high-load applications, many unreleased COM references may accumulate. If the unreleased COM references are related to objects, and these objects are hosted on a remote server by using the DCOM protocol, the remote server must query clients every two minutes to determine whether the objects are regularly referenced. The .NET garbage collector cannot detect unreleased references on the remote server and does not account for the unmanaged memory that is allocated by COM objects.

RESOLUTION

Hotfix rollup information

To resolve this problem, install the hotfix rollup that is described in the following Microsoft Knowledge Base article:
890340 Availability of the .NET Framework 1.1 post-Service Pack 1 hotfix rollup for MsCorLib.dll, for MsCorSvr.dll, and for MsCorWks.dll
For this hotfix to function correctly, you may also have to apply one of the following hotfixes.

Microsoft Windows 2000

To resolve this problem in Microsoft Windows 2000, apply the hotfix that is described in the following Microsoft Knowledge Base article:
888000 Availability of Windows 2000 Post-Service Pack 4 COM+ 1.0 Hotfix Rollup Package 31

Microsoft Windows XP Service Pack 1 or in Windows XP

To resolve this problem in Windows XP Service Pack 1 (SP1) or in Windows XP, apply the hotfix that is described in the following Microsoft Knowledge Base article:
895200 Availability of Windows XP COM+ Hotfix Rollup Package 9

Microsoft Windows XP Service Pack 2

This hotfix is already included with Microsoft Windows XP Service Pack 2 (SP2). For more information, click the following article number to view the article in the Microsoft Knowledge Base:
838211 List of Com+ fixes in Windows XP Service Pack 2 and in Windows XP Tablet PC Edition 2005

Microsoft Windows XP Tablet PC Edition 2005

This hotfix is already included with Microsoft Windows XP Tablet PC Edition 2005. For more information, click the following article number to view the article in the Microsoft Knowledge Base:
838211 List of Com+ fixes in Windows XP Service Pack 2 and in Windows XP Tablet PC Edition 2005

Microsoft Windows Server 2003

To resolve this problem in Microsoft Windows Server 2003, apply the hotfix that is described in the following Microsoft Knowledge Base article:
895250 Availability of Windows Server 2003 COM+ 1.5 Rollup Package 4

Microsoft Windows Server 2003 Service Pack 1

This software update is already included with Microsoft Windows Server 2003 Service Pack 1 (SP1).

WORKAROUND

To work around this problem, explicitly release each COM reference. To do this, use the Marshal.ReleaseComObject method until the ReleaseComObject method returns 0.

Note It can be difficult and time-consuming to systematically use the Marshal.ReleaseComObject method on every managed reference to a COM object. You can also use the GC.Collect method and the GC.WaitForPendingFinalizers method to force early collection of COM references. However, this technique degrades application performance most of the time. Therefore, we do not recommend this technique.

STATUS

Microsoft has confirmed that this is a problem in the Microsoft products that are listed in the "Applies to" section.

MORE INFORMATION

For more information, click the following article number to view the article in the Microsoft Knowledge Base:
824684 Description of the standard terminology that is used to describe Microsoft software updates

Properties

Article ID: 904646 - Last Review: January 17, 2015 - Revision: 2.0
APPLIES TO
  • Microsoft .NET Framework 1.1
Keywords: 
kbnosurvey kbarchive kbbug kbnetframe110presp1fix kbqfe kbfix KB904646

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com