Ja, deze fout bezorgt veel gebruikers die RDS op Windows Server draaien problemen. Soms kunnen gebruikers gewoon geen verbinding maken omdat de service “bezet” is, en het is niet altijd duidelijk waarom. Meestal komt het door vastgelopen sessies, een tekort aan resources of een verkeerde configuratie. Het goede nieuws is dat er een aantal goede manieren zijn om dit op te lossen, maar verwacht geen magische oplossing van Microsoft – het gaat er vooral om de vastgelopen sessies te verwijderen of de server weer in orde te brengen. Het doel is om vastgelopen gebruikerssessies te verwijderen, zodat nieuwe verbindingen tot stand kunnen komen zonder dat de hele server elke keer opnieuw hoeft te worden opgestart. Het is belangrijk om de oorzaak te achterhalen, maar vaak is het gewoon een kwestie van de boel resetten als er iets vastloopt.
Hoe los je problemen op met een overbelaste RDP-service in Windows Server?
Controleer de prestaties van de RDS-host en de beschikbare resources.
Dit is misschien wat voor de hand liggend, maar toch de moeite waard om te vermelden. Als uw server veel geheugen of schijfruimte verbruikt, kan dit de RDS-werking verstoren. Controleer Taakbeheer op CPU-, RAM- en schijfgebruik, met name op de schijf waarop Windows is geïnstalleerd. Er moet minstens 1 GB vrij RAM-geheugen zijn – meer is beter – en voldoende vrije schijfruimte. Kijk ook in de Logboeken onder Windows-logboeken > Systeem voor kritieke fouten met betrekking tot RDS of profielservices. Als er weinig resources beschikbaar zijn, overweeg dan om oude profielen op te schonen, logbestanden te verkleinen of zelfs de hardware te upgraden. Zodra er voldoende resources beschikbaar zijn, kunt u andere oplossingen proberen.
Vastgelopen Remote Desktop-sessies op RDS opnieuw instellen
Als je gebruikerssessies ziet zonder gebruikersnaam en met de status ‘ Verbinding verbroken’, is dat een slecht teken. Deze vastgelopen sessies kunnen nieuwe aanmeldingen blokkeren, en dat is meestal wanneer de melding ‘bezig’ verschijnt. Om ze te vinden, open je Taakbeheer (zelfs op de server, geen speciale tools nodig), ga je naar het tabblad Gebruikers en zoek je naar sessies die gemarkeerd zijn met (4) of zonder gebruikersnaam. Klik met de rechtermuisknop en selecteer Afmelden. Vaak lost dit het probleem op. Maar soms blijven sessies hangen met processen zoals csrss.exe die actief blijven – je weet wel, de gebruikelijke boosdoeners bij vastgelopen sessies.
Als afmelden niet werkt, moet u mogelijk de processen van de gebruiker handmatig beëindigen, met name het csrss.exe- proces dat in die sessie actief is. Zo doet u dat:
- Voer
query sessionin een opdrachtprompt met beheerdersrechten de volgende opdracht uit om alle actieve sessies weer te geven. Zoek de sessie zonder naam of (4). - Noteer de ID van die sessie (bijvoorbeeld 2).
- Gebruik dit
query process /id 2om de processen weer te geven die binnen die sessie actief zijn. Zoek de PID van csrss.exe, die bijvoorbeeld 5140 kan zijn. - Beëindig dat proces:
taskkill /F /PID 5140. Hiermee wordt het proces beëindigd en wordt de sessie meestal daarna afgesloten.
Herhaal dit voor alle vastgelopen sessies. Grappig genoeg werkt het bij sommige configuraties niet altijd meteen perfect, maar in de meeste gevallen is het voldoende om de vastgelopen sessies vrij te maken zonder de computer opnieuw op te starten.
Om dit in de toekomst te voorkomen, kunt u sessietime-outs instellen via Groepsbeleid (zie hieronder).Daarnaast kan het inschakelen van keep-alives voor clientverbindingen voorkomen dat sessies in de status ‘verbroken’ terechtkomen.
Beëindig gebruikerssessies via de opdrachtregel
Als de server weigert gebruikers via Taakbeheer af te melden, kunt u de opdrachtregelmethode proberen. Open een opdrachtprompt met beheerdersrechten en voer de volgende opdracht uit:
query session
Hier worden alle actieve sessies weergegeven. Om een sessie te resetten, doet u het volgende:
reset session rdp-tcp#16
of via sessie-ID:
reset session 3
Dit verbreekt de verbinding van de gebruiker, waardoor resources vrijkomen. Op sommige servers, met name als u ze op afstand beheert, is het wellicht handig om de parameter / server toe te voegen:
reset session rdp-tcp#16 /server:yourserver
Onthoud dat dit de sessie zonder waarschuwing *beëindigt* — gebruik het verstandig.
Licentie-instellingen controleren en corrigeren
Als gebruikers in eerste instantie probleemloos verbinding kunnen maken, maar dat plotseling niet meer lukt, kan dit te maken hebben met de licentie. Controleer of uw RDS-licentieserver correct is geconfigureerd, vooral als u foutmeldingen ziet dat RDS “bezet” is.
Ga op de server naar Serverbeheer > Extern bureaubladservices > Collecties of Implementatie-eigenschappen en controleer de RD-licentie- instellingen. Zorg ervoor dat deze naar de juiste licentieserver verwijzen.
U kunt ook via Groepsbeleid bij Computerconfiguratie > Beleid > Administratieve sjablonen > Windows-onderdelen > Extern bureaubladservices > Licenties het beleid ‘ De opgegeven licentieservers voor Extern bureaublad gebruiken’ instellen en de servernaam opgeven. Als u de licentieserver net hebt geïnstalleerd, wordt deze stap vaak overgeslagen. Dat is het moment waarop de derde gebruiker of zo fouten ondervindt.
Controleer tot slot of de licentiemodus (per gebruiker of per apparaat) overeenkomt met uw configuratie. Zonder de juiste licentie kunnen extra verbindingen worden geblokkeerd.
Schakel de maximale verbindingslimiet uit via GPO.
Standaard staat Windows Server een onbeperkt aantal RDP-verbindingen toe, tenzij het beleid anders is ingesteld. Om dit te controleren of te wijzigen, gebruikt u gpresult /H c:\gpresult.html in een opdrachtprompt met beheerdersrechten en bekijkt u het rapport in een browser. Zoek naar ‘ Aantal verbindingen beperken’.
- Als een dergelijk beleid niet bestaat, hoeft u zich geen zorgen te maken: onbeperkte verbindingen zijn toegestaan.
- Als het bestaat en een nummer heeft (bijvoorbeeld 2), verhoog dit dan of schakel het volledig uit in gpmc.msc.
Voer na de wijzigingen de opdracht uit, gpupdate /forcezodat de nieuwe beleidsregels onmiddellijk van kracht worden. Dit voorkomt de valse foutmeldingen “server bezet” die worden veroorzaakt door te restrictieve verbindingslimieten.
Andere tips voor als niets anders werkt
Als je server nog steeds problemen geeft — de resources lijken in orde, de logbestanden zien er schoon uit en het resetten van sessies heeft niet geholpen — zijn hier een paar andere trucs die mogelijk werken:
- Start de Remote Desktop-service op afstand opnieuw op:
net stop termserviceennet start termservice. Of doe het via PowerShell met:
Get-Service termservice -ComputerName YOURSERVER | Restart-Service
REG ADD "HKLM\SYSTEM\CurrentControlSet\control\Terminal Server\Winstations\RDP-Tcp" /v fQueryUserConfigFromLocalMachine /t REG_DWORD /d 1 /f
of vergelijkbare vermeldingen onder HKLM\Software\Policies\Microsoft\Windows NT\Terminal Services.
SeTokenDoesNotTrackSessionObjecthelpen om achtergebleven of verweesde sessies te verwijderen.
Laten we hopen dat dit de problemen met de overbelaste RDS-server oplost, in ieder geval totdat Microsoft met een elegantere oplossing komt. Meestal gaat het erom vastgelopen sessies op te ruimen en ervoor te zorgen dat je server niet overbelast raakt. Maar soms voorkomt een simpele herstart of het instellen van sessietime-outs dat dit probleem zich opnieuw voordoet.