I have been on site with a few customers lately and a common issue I have been seeing is high pool memory usage. This may manifest itself in user’s PKG files being written out as 0KB files and causing launch failures the next time the app is used. It can also cause 2020 or 2019 errors in the event log and cause the server service to fail to allocate resources which can also cause the Terminal Server computer to refuse connections.
This can happen on Terminal Server/Citrix servers under heavy load because pool memory is a finite resource and by default is tuned to the middle setting. In a Microsoft Exchange world, this setting needs to favor PTEs but in TS we use very few PTEs and thus can tune the other way to maximize pool memory. See http://support.microsoft.com/kb/312362/en-us for more information on the error and how to tune this setting.
However, the 2020 error is not always logged because not all processes log when pool memory allocations fail. So Perfmon can show you the amount of pool memory you are using and windbg can show you the amount you have. See the Advanced Windows Debugging and Troubleshooting blog at http://blogs.msdn.com/ntdebugging/archive/2006/12/18/Understanding-Pool-Consumption-and-Event-ID_3A00_--2020-or-2019.aspx for a detailed walkthrough on identifying pool memory usage.
I have found one culprit causing this issue in the MDM (Machine Debug Manager - http://support.microsoft.com/kb/321410/en-us) that is included in Office packages. It can contribute to high pool memory consumption when as a service it starts for each user that launches an Office application. By disabling this service in Office packages and tuning the memory settings to maximize the available pool memory the overall performance of and stability of both TS and SoftGrid is increased.
Hope this helps,
Travis Guinn | Premier Field Engineer - Microsoft Application Virtualization