You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: support/windows-server/remote/remote-desktop-service-currently-busy.md
+58-54Lines changed: 58 additions & 54 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -14,111 +14,115 @@ This article provides guidance on troubleshooting the "Remote Desktop Service is
14
14
15
15
## Initial triage troubleshooting
16
16
17
-
An important first test to perform is to access the affected target system via console (either physical console / locally, or, in case of a Virtual Machine, through the Hypervisor’s VM console.
17
+
To begin troubleshooting, an important test is to access the affected computer by using the console (Either through a physical console locally, or, in the case of a virtual machine, through the Hypervisor's VM console.)
18
18
19
-
It is not expected on this test that we will also get the error message “RDS Service is currently busy” since we are not accessing via RDP, but we can this way understand if we have other types of issue when performing the logon – such as a different error message, a slow logon or any other type of abnormal behavior.
20
-
If so, this will strongly suggest we are facing another type of issue with the system, that is not RDP related, being RDP the victim of that unhealthy system state and retrieving the ” Remote Desktop Service is currently busy” upon connection.
21
-
In this situation, we should address this issue as a non-RDP issue during a first troubleshooting approach.
19
+
It is not expected to receive the "RDS Service is currently busy" error message during the test because we are not using RDP. The test help us find whether we have other types of issue during the logon. For example, a different error message, a slow logon or any other type of abnormal behavior.
20
+
21
+
If any other issue is found, the "Remote Desktop Service is currently busy" error message might be caused by issue. We strongly suggest addressing the issue before troubleshooting RDP.
22
22
23
23
> [!NOTE]
24
-
> In case we are using Hyper-V console to access the system, make sure to use “Basic session”, since “Enhanced session” will rely on RDP protocol and we may receive the same “RDS is currently busy” message, as it will not be a “pure console” (no RDP involved) connection.
24
+
> In case we are using Hyper-V console to access the computer, make sure to use **Basic session** to do the test. This is because **Enhanced session** relies on RDP and we might receive the same "Remote Desktop Service is currently busy" message.
25
25
>
26
-
> If we do understand the issue is non-RDP related – if it occurs as well via console – the situation shouldn’t be approached as an RDP issue. Still, some of the troubleshooting steps mentioned below, related to RDP related troubleshooting (e.g., RDP server memory issue) may still be valid to troubleshoot overall system performance issues.
26
+
> If we find the issue occurs when using console, and confirmed that the issue is not RDP related, some of the troubleshooting steps in this article such as RDP server memory issue might still be help to troubleshoot the overall system performance issues.
27
27
28
28
## RDP server memory issue
29
29
30
-
If restarting the system temporarily solves the issue until it returns, this may indicate a memory leak or other types of leaks (session leak, token leak, etc.).
30
+
To troubleshoot this issue further, first try to restart the target computer.
31
+
32
+
If restarting the computer temporarily solves the issue, but the issue reoccurs later, this might indicate a memory leak or other types of leaks, such as session leak, token leak and so on.
31
33
32
-
Restart the “Remote Desktop Services” service. If it solves the issue, it may suggest it’s an issue related to this service, and we should also try to understand if the service is indeed consuming an unusual / abnormal amount of memory.
33
-
This is also a potential workaround without having to restart the whole system.
34
+
A potential workaround without restarting the whole system is to restart the Remote Desktop service. If it solves the issue, it might indicate an issue with the service. You need to verify whether the service is indeed consuming an unusual or abnormal amount of memory.
34
35
35
36
> [!NOTE]
36
37
> Restarting RDS service will disconnect all current users that are connected via RDP. The sessions will be maintained though, and users may reconnect to their sessions.
37
-
>
38
-
> If we do understand the issue is non-RDP related – if it occurs as well via console – the situation shouldn’t be approached as an RDP issue. Still, some of the troubleshooting steps mentioned below, related to RDP related troubleshooting (e.g., RDP server memory issue) may still be valid to troubleshoot overall system performance issues.
39
38
40
-
Monitor if there’s another service or process with an usual memory consumption. If so, restarting the service or killing the process is also a good troubleshooting step and possible workaround.
39
+
### Memory leaks
41
40
42
-
Leaks are often caused by third-party software. Without proper data capture and a support case opened with Microsoft, it is difficult to pinpoint the cause.
41
+
Monitor if there's another service or process with unusual memory consumption. If so, restarting the service or killing the process is also a good troubleshooting step and possible workaround.
43
42
44
-
Testing by gradually uninstalling different software and monitoring if the issue stops can be a good approach. Ensure all third-party software is updated.
43
+
> [!NOTE]
44
+
> Leaks are often caused by third-party software. Without proper data capture and a support case opened with Microsoft, it is difficult to pinpoint the cause.
45
+
>
46
+
> Testing by gradually uninstalling different software and monitoring if the issue stops can be a good approach. Also, ensure all third-party software is updated.
47
+
>
48
+
> If we confirm the issue does occur only via RDP, it is advisable to uninstall any third-party software that interacts with the RDP stack.
49
+
50
+
### Session leaks
45
51
46
-
If we confirm the issue does occur only via RDP, it is advisable to uninstall any third-party software that interacts with the RDP stack.
52
+
Another common reason for this type of memory growing issue after system restart is session leaks, which is one of those situations where by looking at resource consumption (such as looking for high memory or CPU consumption in Task Manager) will not show anything obvious as the issue is occurring “under the hood” on the system.
47
53
48
-
Another common reason for this type of “growing” issue after system restart is session leaks, which is one of those situations where by looking at resource consumption (such as looking for high memory or CPU consumption in Task Manager) will not show anything obvious as the issue is occurring “under the hood” on the system.
49
-
There may be several different reasons for session leak but, again, it is very common it is caused by 3rd party software.
50
-
In the particular case of session leak, is also very common that this is caused by security software (Anti-virus, EndPoint protection software, etc.) or other types of software that may interact with RDP user’s sessions.
54
+
There may be several different reasons for session leak, but it is very common that the leak is caused by 3rd party software. Particularly, it is very commonly caused by security software (such as antivirus or endpoint protection software) or other types of software that may interact with RDP user sessions.
51
55
52
56
> [!NOTE]
53
-
> Stopping the software does not have the same effect as totally uninstalling it from the system, as there may still be modules loaded, hooks to the system’s components, etc.
57
+
> Stopping the software does not have the same effect as totally uninstalling it from the system, because there may still be modules loaded, hooks to the system’s components, and so on.
54
58
55
-
If the issue is temporarily solved with a system restart, monitor if a certain process is consuming an unusual amount of memory and if its memory consumption is growing over time.
59
+
If the issue is temporarily solved with a system restart, monitor if a certain process is consuming an unusual amount of memory and if the memory consumption is growing over time.
56
60
57
61
## GPO troubleshooting
58
62
59
-
Hardening on the system, configured via GPO, may also be a possible reason. Identifying and removing related GPOs (e.g., RDS related GPOs or hardening GPOs such as changes made to "User Rights Assignment" Security policies) is a good test while monitoring if the issue returns.
60
-
If possible, try to remove all GPOs from the system without that causing technical or security implications, that would be a good test as well, to narrow down if it is a GPO causing it.
63
+
Hardening on the system, configured via GPO, might also be a possible reason.
61
64
62
-
We can also check the “GroupPolicy” event logs to try to understand if there may be any GPO failing to be processed or if there’s a global issue with GPService, which can also be reasons to trigger this behavior.
63
-
64
-
## Data collection
65
+
To troubleshoot the issue, identify and remove related GPOs to test and monitor if the issue reoccurs. For example, RDS related GPOs or hardening GPOs such as changes made to "User Rights Assignment" Security policies.
65
66
66
-
Although we’ve discussed many possible reasons related to what may cause this type of issue, for this kind of situation it’s usually not possible to know what is causing the issue without proper data capture and complex analysis - even if we identify a certain process or service that consumes too much memory, we will unlikely know what the root cause is for that high memory consumption.
67
+
If possible, try to remove all GPOs from the system without that causing technical or security implications. This solution is a good test to narrow down if it is a GPO causing the RDP issue.
67
68
68
-
We will now discuss data that can be captured in advance before opening a support case with Microsoft’s support.
69
+
We can also check the "GroupPolicy" event logs to understand if there may be any GPO failing to be processed, or if there’s a global issue with GPService. Both of them can be the cause of the RDP issue.
69
70
70
-
### Traces capture using TSS tool
71
-
72
-
Download the latest version of the TSS tool from [https://aka.ms/GeTSS](https://aka.ms/GeTSS)
73
-
74
-
Extract it to the RDP client system (source) and RDP server (target)
71
+
## Data collection
75
72
76
-
> [!NOTE]
77
-
> For scenarios of a full RDS deployment, although the system where the “RDS service is currently busy” is showing, is the most important system to capture the data in, we should capture the data in all systems of the deployment involved in the connection flow (which includes RD Connection Broker and RD Gateway).
73
+
Even if we identify a certain process or service that consumes too much memory, we will unlikely know what the root cause is. For unresolved issues, data collection is critical for complex analysis. Here are steps for preparing data before contacting Microsoft support.
78
74
79
-
Launch a PowerShell prompt on both systems and run the following commands, respectively:
75
+
### Traces capture using TSS tool
80
76
81
-
RDP Client:
77
+
1. Download the latest version of the TSS tool from [https://aka.ms/GeTSS](https://aka.ms/GeTSS)
78
+
2. Extract it to the RDP client computer (source) and the RDP server (target).
82
79
83
-
```console
84
-
.\TSS.ps1 -Scenario UEX_RDSCli
85
-
```
80
+
> [!NOTE]
81
+
> In scenarios of a full RDS deployment, although the system displaying the "RDS service is currently busy" message is the most important for data capture, we should collect data from all systems involved in the connection flow, including the RD Connection Broker and RD Gateway.
86
82
87
-
RDP Server(s):
83
+
3. Launch a PowerShell prompt on both systems and run the following commands, respectively:
88
84
89
-
```console
90
-
*.\TSS.ps1 -Scenario UEX_RDSSrv*
91
-
```
85
+
On RDP client:
92
86
93
-
Wait for the message that states to “Reproduce the issue now”
87
+
```console
88
+
.\TSS.ps1 -Scenario UEX_RDSCli
89
+
```
94
90
95
-
Reproduce the connection until we get the “RDS is currently busy” error
91
+
On RDP Server(s):
96
92
97
-
Stop the traces at this stage, by pressing the requested key to do so
93
+
```console
94
+
*.\TSS.ps1 -Scenario UEX_RDSSrv*
95
+
```
98
96
99
-
Gather the data from where the tool informs it was saved (usually “C:\MS_DATA”)
97
+
4. Wait for the message that states to **Reproduce the issue now**.
98
+
5. Reproduce the connection until we get the "Remote Desktop Service is currently busy" error.
99
+
6. Stop the traces at this stage, by pressing the requested key.
100
+
7. Collect the data from the location where the tool prompts.
101
+
8. Gather the data from the location specified by the tool. (usually C:\MS_DATA).
100
102
101
103
### Full memory dump
102
104
103
-
We should take the full memory dump at the time the system is in the affect state and while reproducing a RDP connection that will generate the “RDS is currently busy” error message.
105
+
We should take a full memory dump when the system is in the affected state and while reproducing an RDP connection that generates the "Remote Desktop Service is currently busy" error message.
104
106
105
107
> [!NOTE]
106
108
> Keep the connection with the error “RDS is currently busy” open while taking the dump, i.e., don’t close this connection and take the dump while the error is still being displayed on the affected connection.
107
-
Please note down what was the user account used to reproduce this connection.
108
109
109
-
### Capture dump on a Hypervisor / Virtual Machine scenario
110
+
Note down what was the user account used to reproduce this connection.
110
111
111
-
- Take a snapshot to the Virtual Machine – with “full memory” option selected, if the Hypervisor provides this option - at the time the dump should be taken (as described above).
112
+
#### Capture dump on a hypervisor or virtual machine scenario
113
+
114
+
- Take a snapshot to the virtual machine with "full memory" option selected, if the hypervisor provides this option. At the time the dump is be taken (as described above).
112
115
- Convert the snapshot to a full memory dump.
113
116
114
117
> [!NOTE]
115
118
> Each Hypervisor manufacturer uses different tools / methods to convert the snapshot to full dump. Please check on the support documentation of that Hypervisor vendor how to perform this conversion.
116
119
117
-
### Capture dump on physical system
120
+
#### Capture dump on physical system
121
+
122
+
Follow the steps described on the following article:
118
123
119
-
Please follow the steps described on the following article:
120
124
[Generate a kernel or complete crash dump](https://learn.microsoft.com/en-us/troubleshoot/windows-client/performance/generate-a-kernel-or-complete-crash-dump)
121
125
122
126
### Possible additional data
123
127
124
-
There are different types of data that can be captured according to the different situations we’ve discussed within this article (for example, when a specific process / service that has growing memory consumption, a specific WPR capture should be performed to capture heap memory consumption of that process), but Microsoft’s support will inform accordingly what additional data may need to be captured after the first analysis is done and according to the situation we are facing.
128
+
There are different types of data that can be captured depending on the situations discussed in this article. For example, if a specific process or service shows growing memory consumption, a specific Windows Performance Recorder (WPR) capture should be performed to capture the heap memory consumption of that process. However, Microsoft support will inform you of any additional data that may need to be captured after the initial analysis, based on the situation we are facing.
0 commit comments