In a complex distributed RDS environment, it’s difficult to measure RDS performance: the end user typically notices responsiveness in a different way compared to measuring a single Windows Performance Counter!
Overall performance tends to degrade over time: and frequent maintenance is required to keep an RDS Farm efficient.
Of course, the first step is to keep the whole RDS Farm monitored, especially the load on the Session Host servers, where users run their applications.
A Grafana Dashboard provided by NetEye can give a quick, comprehensive view of what’s going on.
One of the main load generators on Terminal Servers is the printing task.
Of course, we cannot avoid printing, but by using an external network Print Server, we can move a significant source of load off of the Session Host servers.
Disabling the default flag “render print jobs on client computers” in the Shared Printer properties will further reduce the load on RDS by moving it to the Print Server:
It’s important to limit the number of User Sessions: resources are limited and should be prioritized for people who really need them.
Configuring the “End a disconnected session” and possibly the “Idle session limit” parameters for Collection will free up unused resources:
It’s important to keep User profiles on RDS small and clean as it will provide a fast user experience.
Unfortunately, a strange behavior in Windows Server tends to fill User profiles with references to pinned items on the start screen. These references are hosted in the User’s registry and grow at each user logon to the RDS Farm.
All these references slow down the user login process day by day and, after a long time, can introduce a delay of as much as 30 seconds or more!
Purging either manually or by a Group Policy is necessary to keep the user profiles clean.
Some third-party applications can also leave bad data into the user’s profiles causing slow responsiveness on RDS.
One famous case is Adobe Reader, which during some printing tasks leaves a number of Z@R****.tmp files in Appdata\Local\Temp\\ that are locked and cannot be deleted until the server is rebooted. This prevents profiles from being deleted properly upon logoff.
There isn’t an easy way to keep a Remote Desktop Farm clean and efficient.
It’s important to have a good monitoring system like NetEye to discover long term bad trends.
Then, depending on the applications installed on the Session Host servers, you should periodically analyze the trends and the Windows Event Logs.