VMware Advanced Monitoring for Horizon powered by ControlUp - Show Zombie Processes on RDS Servers

Updated on

In this quick walkthrough we're going show you how you can use the script actions feature within ControlUp to find zombie processes running in RDS servers. This example will show how you can call a script action that can find (and kill) all zombie processes across one or more Remote Desktop Servers.


  • Section 1: Connect to all monitored resources.
  • Section 2: Focus on the TD-Windows10-Dallas folder.
  • Section 3:  Click on the "Machines" Object, then filter for all machines with "RDS" in the name .
  • Section 4: Run the "Show Zombie Processes" script action on multiple RDS servers all at once.

 Before you Begin

In order to complete this product walkthrough please make sure you have the following:

  • A valid account in the VMware TestDrive environment, sign up here if you do not have one.
  • TCP & UDP ports 80, 443, 8443; and if using PCoIP, both TCP & UDP 4172
  • Latest Horizon Client installed, available via direct download here.
  • A ControlUp user account on TestDrive. See this article for info on how to access ControlUp on TestDrive and create an account.

What is a "Zombie process"?  Here is one useful definition -

"A zombie process is a process in its terminated state. This usually happens in a program that has parent-child functions. After a child function has finished execution, it sends an exit status to its parent function. Until the parent function receives and acknowledges the message, the child function remains in a “zombie” state, meaning it has executed but not exited.

A zombie process is also known as a defunct process."

Zombie processes are not uncommon to find on Remote Desktop Servers. The problem with Zombie processes is they waste valuable memory on RDS Servers , memory that is not available for other active RDS sessions. This can impact performance and scalability.

Here is the description of the script action entitled - "Show Zombie Processes"

Find processes which are in sessions which no longer exist or where there are no handle or thread objects open by that process which means that it will not be able to run. Zombie processes may be responsible for end user application usability issues. If the killParameter is set to true, all zombie processes will be killed. 

Here is a short video demo of this walk through.

"Show Zombie Processes" Script Action Demo

SECTION 1: Connect to all monitored resources.

Right Click on the TestDrive-vmwtd.com folder in the left pane, then select "Connect" in the context menu to connect to all the monitored resources.

Section 2: Focus on the TestDrive-vmwtd.com folder.

In the left pane, right click on the upper most folder that is titled "TestDrive-vmwtd.com" and select "Focus" in the context menu.

Section 3:  Click on the "Machines" Object, then filter for all machines with "RDS" in the name.

In the center Dashboard view, click on "Machines" to view only the virtual machines in the TestDrive environment. On the far right, type "RDS" in the filter then hit "enter" This will filter the "Machines" view to only show virtual machines with "RDS" in the name.

Section 4: Run the "Show Zombie Processes" script action on multiple RDS servers all at once.

Click on the first RDS Server in the grid view using your mouse.

Next, click and drag your mouse down to the bottom of list to select all RDS Servers (or just type -Control-A to select all).

Right click on any server name in the list. A context menu will appear.

In the search box, type "Zombie". 

Then hover your mouse over "Script Actions", then when it appears, click on "Show Zombie Processes".

A new window appears that gives you the option to add command line arguments to the script action (including the option to set "kill detected processes" to true).  Do NOT change the argument and click "Ok" at the bottom on the window.

Click in the top right of the window to maximize so you can clearly read all the information. You may need to resize the "Members" section of the window to make the "Output" section more readable.

If there are any current Zombie processes, two groups of results will appear. if there are no current zombie processes, only one group will appear (a group with the result of "No zombie processes found").

Assuming two groups do appear, click on "Group 2" in the window.

In the right hand side, you will see a list of the current "Zombie processes". In this example from TestDrive, 4 zombie processes from one session which no longer exists were found.

Previous Article VMware Advanced Monitoring for Horizon powered by ControlUp - Horizon API Integration Demo
Next Article VMware Advanced Monitoring for Horizon powered by ControlUp - Network Focused Script Actions