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
# User receives "Remote Desktop Service is currently busy" message on connecting
13
13
14
-
To determine an appropriate response to this issue, see the following:
14
+
This article introduces how to troubleshoot the "Remote Desktop Service is currently busy" message.
15
15
16
-
- Does the Remote Desktop Services service becomes unresponsive (for example, the remote desktop client appears to "hang" at the Welcome screen).
17
-
- If the service becomes unresponsive, see [RDSH server memory issue](#rdsh-server-memory-issue).
18
-
- If the client appears to be interacting with the service normally, continue to the next step.
19
-
- If one or more users disconnect their remote desktop sessions, can users connect again?
20
-
- If the service continues to deny connections no matter how many users disconnect their sessions, see [RD listener issue](#rd-listener-issue).
21
-
- If the service begins accepting connections again after many users have disconnected their sessions, [check the connection limit policy](#check-the-connection-limit-policy).
16
+
## Initial triage troubleshooting
22
17
23
-
## RDSH server memory issue
18
+
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.
24
19
25
-
A memory leak has been found on some Windows Server 2012 R2 RDSH servers. Over time, these servers begin to refuse both remote desktop connections and local console sign-ins with messages like the following:
20
+
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.
21
+
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.
22
+
In this situation, we should address this issue as a non-RDP issue during a first troubleshooting approach.
26
23
27
-
> The task you are trying to do can't be completed because Remote Desktop Service is currently busy. Please try again in a few minutes. Other users should still be able to sign in.
24
+
> [!NOTE]
25
+
> 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.
26
+
>
27
+
> 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.
28
28
29
-
Remote Desktop clients attempting to connect also become unresponsive.
29
+
## RDP server memory issue
30
30
31
-
To work around this issue, restart the RDSH server.
31
+
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.).
32
32
33
-
To resolve this issue, apply KB 4093114, [April 10, 2018-KB4093114 (Monthly Rollup)](https://support.microsoft.com/help/4093114/), to the RDSH servers.
33
+
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.
34
+
This is also a potential workaround without having to restart the whole system.
34
35
35
-
## RD listener issue
36
+
> [!NOTE]
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.
38
+
>
39
+
> 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.
36
40
37
-
An issue has been noted on some RDSH servers that have been upgraded directly from Windows Server 2008 R2 to Windows Server 2012 R2 or Windows Server 2016. When a Remote Desktop client connects to the RDSH server, the RDSH server creates an RD listener for the user session. The affected servers keep a count of the RD listeners that increases as users connect, but never decreases.
41
+
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.
38
42
39
-
You can work around this issue with the following methods:
43
+
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.
40
44
41
-
- Restart the RDSH server to reset the count of RD listeners
42
-
- Modify the connection limit policy, setting it to a large value. For more information about managing the connection limit policy, see [Check the connection limit policy](#check-the-connection-limit-policy).
45
+
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
46
44
-
To resolve this issue, apply the following updates to the RDSH servers:
47
+
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.
45
48
46
-
- Windows Server 2012 R2: KB 4343891, [August 30, 2018-KB4343891 (Preview of Monthly Rollup)](https://support.microsoft.com/help/4343891/windows-81-update-kb4343891)
47
-
- Windows Server 2016: KB 4343884, [August 30, 2018-KB4343884 (OS Build 14393.2457)](https://support.microsoft.com/help/4343884/windows-10-update-kb4343884)
49
+
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.
50
+
There may be several different reasons for session leak but, again, it is very common it is caused by 3rd party software.
51
+
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.
48
52
49
-
## Check the connection limit policy
53
+
> [!NOTE]
54
+
> 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.
50
55
51
-
You can set the limit on the number of simultaneous remote desktop connections at the individual computer level or by configuring a group policy object (GPO). By default, the limit isn't set.
56
+
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.
52
57
53
-
To check the current settings and identify any existing GPOs on the RDSH server, open a command prompt window as an administrator and enter the following command:
54
-
55
-
```console
56
-
gpresult /H c:\gpresult.html
57
-
```
58
+
## GPO troubleshooting
58
59
59
-
After this command finishes, open *gpresult.html*. In **Computer Configuration**\\**Administrative Templates**\\**Windows Components**\\**Remote Desktop Services**\\**Remote Desktop Session Host**\\**Connections**, find the **Limit number of connections** policy.
60
+
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.
61
+
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.
60
62
61
-
- If the setting for this policy is **Disabled**, then group policy isn't limiting RDP connections.
62
-
- If the setting for this policy is **Enabled**, then check **Winning GPO**. If you need to remove or change the connection limit, edit this GPO.
63
+
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
64
-
To enforce policy changes, open a command prompt window on the affected computer, and enter the following command:
65
-
66
-
```console
67
-
gpupdate /force
68
-
```
65
+
## Data collection
66
+
67
+
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.
68
+
69
+
We will now discuss data that can be captured in advance before opening a support case with Microsoft’s support.
70
+
71
+
### Traces capture using TSS tool
72
+
73
+
Download the latest version of the TSS tool from [https://aka.ms/GeTSS](https://aka.ms/GeTSS)
74
+
75
+
Extract it to the RDP client system (source) and RDP server (target)
76
+
77
+
> [!NOTE]
78
+
> 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).
79
+
80
+
Launch a PowerShell prompt on both systems and run the following commands, respectively:
81
+
82
+
**RDP Client:**
83
+
*.\TSS.ps1 -Scenario UEX_RDSCli*
84
+
85
+
**RDP ****Server****(s)****:**
86
+
87
+
*.\TSS.ps1 -Scenario UEX_RDSSrv*
88
+
89
+
Wait for the message that states to “Reproduce the issue now”
90
+
91
+
Reproduce the connection until we get the “RDS is currently busy” error
92
+
93
+
Stop the traces at this stage, by pressing the requested key to do so
94
+
95
+
Gather the data from where the tool informs it was saved (usually “C:\MS_DATA”)
96
+
97
+
### Full memory dump
98
+
99
+
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.
100
+
101
+
> [!NOTE]
102
+
> 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.
103
+
Please note down what was the user account used to reproduce this connection.
104
+
105
+
### Capture dump on a Hypervisor / Virtual Machine scenario
106
+
107
+
- 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).
108
+
- Convert the snapshot to a full memory dump.
109
+
110
+
> [!NOTE]
111
+
> 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.
112
+
113
+
### Capture dump on physical system
114
+
115
+
Please follow the steps described on the following article:
116
+
[Generate a kernel or complete crash dump](https://learn.microsoft.com/en-us/troubleshoot/windows-client/performance/generate-a-kernel-or-complete-crash-dump)
117
+
118
+
### Possible additional data
119
+
120
+
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.
0 commit comments