Rebooting your Terminal Servers
- Published: Thursday, 03 July 2008
One of most heard jokes of Microsoft Windows is rebooting is the solution for setting configuration changes or solving errors/issues. Linux/Unix and Novell followers still use this story to explain why they don't like Windows. Comparing with those operating systems they are right that Windows needs more reboots, however Microsoft is working hard on this and within every new release less reboots are needed. However it is a best practice to reboot your Terminal Server on a periodical. Almost every time I propose to schedule periodical reboots at my customers even from the Windows engineers I the question why I would like to this. In this article I will explain why it is a good thing to regularly reboot your Terminal Servers.
As just mentioned when I ask the question if the Terminal Servers are rebooted regularly or propose the create a reboot schedule I see big question marks in the eyes of the system administrator(s), followed by the sentence why reboot the server regularly , we don't boot any server periodical. I totally agree that it is not "normal" that servers are rebooted periodical, but a Terminal Server is also not a Terminal Server. Why reboot a Terminal server regularly? The reasons are:
A Terminal Server is not a "normal" server
First of all a Terminal Server is a very special server. On a normal server a kind of client communicates with the server, but on a Terminal Server users are working directly with client applications. In other words instead of back-end applications front applications are running on a Terminal Server. Of course the behavior of such kind of applications is completely different to a Terminal Server cannot be compared with a normal server and so default rules for servers are not applying to Terminal Servers.
Memory usage is increasing constantly
Of course the above reason is not a reason why you should reboot a server, but to understand this perspective is important for the real reasons.
One of the most important reasons to reboot the Terminal Server regularly is the amount of available memory is decreasing constantly. By default almost every applications does not free up his used memory fully, but there are several applications that are (so called) leaking memory. Dependent of your applications running on your Terminal Server there will be a moment that both the usage of internal memory and page file is so high that a Terminal Server will respond slower or does not response in total. By rebooting the Terminal Server frees up his memory and page file.
(Temporary) Files are increasing
Also applications are using temporary files to function. Those files are hopefully stored in a temporary location, but I have also seen applications that store such files in his installation directory. Unfortunate such files are not always removed when they are not needed anymore. Such files can cause that all the available space on the hard disk of the Terminal Server is used, causing an unresponsive server. Think of none removed User Profiles, Temporary application files and non removed print jobs. By rebooting the server such files can be removed during the reboot or can be removed using a script during start-up.
Summarized: Cleaning up the system and getting your system in good condition again.
Summarized you want to reboot to clean up the system with used disk space or memory. Cleaning up the system arranges that the system is in good shape again, because memory and disk space is again available. Normally such behavior is also available on default workstations, where the same actions are performed by shutting down the machine (normally a workstation is not running constantly for days/weeks). Only on a Terminal Server instead of one server many more users are working so the behavior can extrapolate by the amount of users.
Rebooting the Terminal Server environment on a regularly basis is done to get your machine in good condition because resources are getting exhausted. Mainly this is caused by the (client) applications that are running on those machines, which are started by a amount of users. The need for rebooting Terminal Services is definitely there, the schedule depends on the facts how much memory your applications are consuming (and not freeing up after closing) and how many (temporary) files are created (and not deleted). In an upcoming article I will describe how to reboot your terminal servers, which actions should be taken during/after the reboot and how to create/determine an reboot schedule.