Legacy applications that are running on Windows Server 2008-based terminal servers may decrease in performance over time

Gilt für: Windows Server 2008 EnterpriseWindows Server 2008 R2 Enterprise

Symptoms


Legacy applications that are running on Windows Server 2008-based computers that have Terminal Server enabled may decrease in performance over time. This occurs when an application is not marked as Terminal Server aware. In this situation, the application may become slower to respond and may continue to decrease in performance as application uptime increases. Processor utilization in the application for the TSAPPCMP.dll module will continue to increase as the application continues to run.

Note Windows Performance Toolkit traces of the application reveal that the application continues to spend increasing CPU cycles in the TSAPPCMP.dll!ShouldEntryBeProcessed function.

Cause


Legacy applications cannot be marked as Terminal Server aware because they do not contain the /TSAWARE linker option. Therefore, they load the TSAPPCMP.dll module. This module hooks module load events. Because of a problem in TSAPPCMP.dll, when an application loads and unloads many modules over time, the list of modules that are tracked may become so long that traversing the list affects the performance of the application. We know about this behavior and changed it in Windows Server 2012 and later versions.

Workaround


To work around this behavior, enable the /TSAWARE linker option in the application executable (.exe) file. This prevents TSAPPCMP.dll from being loaded. 

The /TSAWARE flag can be added to developers' build projects. Or, the flag can be set on pre-existing executables by using EDITBIN.exe.

More Information


For more information, go to the following Microsoft Developer Network (MSDN) websites: