Cómo resolver el error «Servicios de Escritorio remoto ocupados»

Sí, este error afecta a muchos usuarios de RDS en Windows Server. A veces, los usuarios simplemente no pueden conectarse porque el servicio está «ocupado», y no siempre está claro por qué. Normalmente, se debe a sesiones bloqueadas, escasez de recursos o una configuración incorrecta. La buena noticia es que existen métodos eficaces para solucionar este problema, pero no esperes una solución mágica de Microsoft; se trata principalmente de eliminar las sesiones defectuosas o de restablecer el servidor. El objetivo es eliminar las sesiones bloqueadas para que se puedan realizar nuevas conexiones sin tener que reiniciar el servidor cada vez. Dicho esto, comprender la causa raíz ayuda, pero a menudo, solo se trata de reiniciar el sistema cuando se bloquea.

Cómo solucionar problemas de servicio RDP ocupado en Windows Server

Comprobar el rendimiento del host RDS y los recursos disponibles

Este es un punto obvio, pero vale la pena mencionarlo. Si su servidor consume mucha memoria o espacio en disco, puede afectar el funcionamiento de RDS. Revise el Administrador de tareas para ver el uso de CPU, RAM y disco, especialmente en la unidad donde está instalado Windows. Debería haber al menos un gigabyte de RAM libre (cuanto más, mejor) y una cantidad considerable de espacio libre en disco. Además, revise el Visor de eventos en Registros de Windows > Sistema para detectar cualquier error crítico relacionado con RDS o los servicios de perfiles. Si los recursos son limitados, considere limpiar los perfiles antiguos, reducir los registros o incluso actualizar el hardware. Una vez que los recursos sean suficientes, pase a otras soluciones.

Restablecer sesiones de Escritorio remoto bloqueadas en RDS

Si detecta sesiones de usuario sin nombre de usuario y con el estado Desconectado, es una señal de alerta. Estas sesiones bloqueadas pueden bloquear nuevos inicios de sesión, y es entonces cuando suele aparecer el mensaje «ocupado».Para encontrarlas, abra el Administrador de tareas (incluso en el servidor, sin necesidad de herramientas complejas), vaya a la pestaña Usuarios y busque las sesiones marcadas como (4) o sin nombre de usuario. Haga clic derecho y seleccione Cerrar sesión. Normalmente, esto soluciona el problema. Sin embargo, a veces, las sesiones se bloquean con procesos como csrss.exe persistentes, ya sabe, los sospechosos habituales en los casos de bloqueo de sesiones.

Si cerrar sesión simplemente no funciona, quizás tengas que cerrar los procesos del usuario manualmente, especialmente el proceso csrss.exe que se ejecuta en esa sesión. Aquí te explicamos cómo:

  • Ejecútalo query sessionen un símbolo del sistema con privilegios elevados para listar todas las sesiones activas. Busca la que no tiene nombre o (4).
  • Anote el ID de esa sesión (por ejemplo, 2).
  • Úselo query process /id 2para listar los procesos que se ejecutan en esa sesión. Busque el PID de csrss.exe, que podría ser 5140.
  • Terminar ese proceso: taskkill /F /PID 5140. Esto finaliza el proceso y, por lo general, la sesión se borra después.

Repita este proceso para todas las sesiones bloqueadas. Lo curioso es que, en algunas configuraciones, esto no siempre funciona a la perfección a la primera, pero en la mayoría de los casos basta para liberar las sesiones bloqueadas sin tener que reiniciar.

Para evitar este problema en el futuro, considere configurar los tiempos de espera de las sesiones mediante la directiva de grupo (ver más abajo).Además, activar las conexiones persistentes para las conexiones de cliente puede evitar que las sesiones queden desconectadas.

Eliminar sesiones de usuario mediante la línea de comandos

Si el servidor no le permite cerrar la sesión de los usuarios mediante el Administrador de tareas, puede probar la línea de comandos. Abra el Símbolo del sistema del administrador y ejecute:

query session

Aquí se enumeran todas las sesiones activas. Para restablecer una sesión, haga lo siguiente:

reset session rdp-tcp#16

o por ID de sesión:

reset session 3

Esto desconecta al usuario forzosamente, liberando recursos. En algunos servidores, especialmente si los administra remotamente, puede ser útil agregar el parámetro / servidor :

reset session rdp-tcp#16 /server:yourserver

Recuerde, esto *mata* la sesión sin previo aviso: úselo con prudencia.

Verificar y corregir la configuración de licencias

Si los usuarios se conectan correctamente al principio, pero de repente dejan de hacerlo, podría estar relacionado con la licencia. Debe confirmar que su servidor de licencias RDS esté configurado correctamente, especialmente si ve errores de RDS «ocupado».

En el servidor, vaya a Administrador del servidor > Servicios de Escritorio remoto > Colecciones o Propiedades de implementación y revise la configuración de Licencias de Escritorio remoto. Asegúrese de que apunte al servidor de licencias correcto.

Como alternativa, mediante la directiva de grupo en Configuración del equipo > Directivas > Plantillas administrativas > Componentes de Windows > Servicios de Escritorio remoto > Licencias, configure la directiva » Usar los servidores de licencias de Escritorio remoto especificados» y especifique el nombre del servidor. Si acaba de instalar el servidor de licencias, este paso suele omitirse; es entonces cuando el tercer usuario, aproximadamente, experimenta errores.

Finalmente, verifique que el modo de licencia (por usuario o por dispositivo) coincida con su configuración. Sin la licencia correcta, podrían bloquearse conexiones adicionales.

Deshabilitar el límite máximo de conexión mediante GPO

De forma predeterminada, Windows Server permite conexiones RDP ilimitadas, a menos que la política se configure de otra manera. Para comprobarlo o modificarlo, use gpresult /H c:\gpresult.html en una consola con privilegios elevados y revise el informe en un navegador. Busque » Limitar el número de conexiones».

  • Si no existe tal política, no se preocupe: se permiten conexiones ilimitadas.
  • Si existe y tiene un número establecido (por ejemplo, 2), auméntelo o deshabilítelo por completo en gpmc.msc.

Tras el cambio, ejecute gpupdate /forcepara que las nuevas políticas surtan efecto inmediatamente. Esto evita los falsos errores de «servidor ocupado» causados ​​por límites de conexión demasiado restrictivos.

Otros consejos cuando nada más funciona

Si su servidor sigue funcionando mal (los recursos parecen estar bien, los registros se ven limpios y reiniciar las sesiones no ayudó), aquí hay otros trucos que podrían funcionar:

  • Reinicie el servicio de Escritorio remoto de forma remota: net stop termservicey net start termservice. O bien, hágalo mediante PowerShell con:
Get-Service termservice -ComputerName YOURSERVER | Restart-Service
  • Elimine todos los procesos tstheme.exe : a veces, los temas o los elementos visuales provocan bloqueos.
  • Revise el registro para detectar problemas, especialmente en Windows Server 2012 R2, donde puede aparecer el ID de evento 20499. Es posible que deba agregar la entrada de registro:

    REG ADD "HKLM\SYSTEM\CurrentControlSet\control\Terminal Server\Winstations\RDP-Tcp" /v fQueryUserConfigFromLocalMachine /t REG_DWORD /d 1 /f

    o entradas similares en HKLM\Software\Policies\Microsoft\Windows NT\Terminal Services.

  • Si están involucrados entornos Citrix o VDI, ajustes de registro adicionales SeTokenDoesNotTrackSessionObjectpueden ayudar a borrar sesiones fantasma o huérfanas.

  • Crucemos los dedos, esto ayudará a solucionar el problema del RDS, al menos hasta que Microsoft lance una solución más elegante. Normalmente, se trata simplemente de limpiar las sesiones bloqueadas y asegurarse de que el servidor no se sature. Aun así, a veces un buen reinicio o configurar tiempos de espera de sesión evita que esto vuelva a ocurrir.