โดย Default เมื่อ User ปิดหน้าต่าง RDP/RDS Session ใน Terminal Client (mstsc.exe, RDCMan หรือ Remote Desktop HTML5 Web Client) โดยเพียงแค่คลิก Cross ที่มุมขวาบนโดยไม่ Log Off Session ของเขาจะเข้าโหมด Disconnected ในโหมดนี้ แอปทั้งหมด ไฟล์ที่เปิด และหน้าต่างยังคงทำงานบน Remote Desktop Server และใช้ทรัพยากร
โดย Default RDP Session ของ User ใน Windows อาจอยู่ในสถานะ Disconnected จนกว่าจะถูก Terminate โดย User หรือ Administrator หรือจนกว่าคอมพิวเตอร์จะ Restart มันค่อนข้างสะดวก เนื่องจาก User อาจเชื่อมต่อกับ Remote Desktop Session เก่าของเขาได้ทุกเมื่อ และทำงานต่อกับโปรแกรมที่กำลังรันหรือไฟล์ที่เปิดอยู่
ใน Screenshot ต่อไปนี้คุณเห็นว่า Disconnected User Sessions บน RDS Server ที่รัน Windows Server 2016 ใช้ RAM ประมาณ 40% ของ Server นอกจากนี้ Sessions เหล่านี้อาจ Block Open Files บน File Servers ของคุณ ทำให้เกิดปัญหาการบันทึกข้อมูลที่ไม่ถูกต้องใน Apps, Roaming Profile Folders หรือบน User Profile Disks

โดยใช้คำสั่ง quser คุณสามารถดูได้ว่า User RDP Session เริ่มเมื่อไหร่ Idle นานแค่ไหน และ Session State ปัจจุบัน

เพื่อ Terminate Disconnected RDP/RDS Sessions อัตโนมัติในช่วงเวลาที่ระบุ คุณต้องตั้งค่า Session Limits (Timeouts) ให้ถูกต้อง
หากคุณใช้ RDS Server คุณสามารถตั้งค่า Session Timeout Parameters ใน RDS Collection Settings บนแท็บ Session
ระบุช่วงเวลา หลังจากที่คุณต้องการ Kill Disconnected Remote Desktop Session ในตัวเลือก End a disconnected session (โดย Default Session Period เป็น Unlimited – Never) คุณยังสามารถตั้งค่า Maximum Time ของ Active Session (Active session limit) และ End Idle Session (Idle session limit) Hard Timeouts นี้จะถูกนำไปใช้กับ Sessions ทั้งหมดใน RDS Collection

คุณยังสามารถตั้งค่าขีดจำกัด RDP Session ใน Properties ของ Local (lusrmgr.msc) หรือ Domain User (dsa.msc — Active Directory Users and Computers) ได้

ไม่ควรทำ RDP Session Timeouts สั้นเกินไป มิฉะนั้น User Sessions จะถูก Terminate เกือบทันทีหลังจากที่กลายเป็น Inactive
ใน Windows Server 2012 R2/2016/2019 คุณสามารถตั้งค่า RDP Session Timeouts โดยใช้ Group Policies คุณสามารถทำได้ทั้งใน Domain GPO Editor (gpmc.msc) หรือ Local Group Policy Editor (gpedit.msc) บน RDS Server หรือ Client (หากคุณใช้ Windows Desktop Edition เป็น Terminal Server)
การตั้งค่า RDP Session Timeouts อยู่ใน GPO Section ต่อไปนี้ Computer Configuration -> Policies -> Administrative Templates -> Windows Components -> Remote Desktop Services -> Remote Desktop Session Host -> Session Time Limits Remote Desktop Timeout Settings ต่อไปนี้พร้อมใช้งาน:
- Set time limit for disconnected session;
- Set time limit for active but idle Remote Desktop Services sessions — Policy อนุญาตให้ Terminate Idle RDP Sessions ที่ไม่มี User Input (เช่น การเลื่อน Mouse หรือพิมพ์บน Keyboard);
- Set time limit for active Remote Desktop Services sessions — นี่คือ Maximum Time ของ RDP Session ใดๆ (แม้จะ Active) หลังจากนั้นจะถูก Disconnected;
- End Session when time limits are reached — ตั้งค่าเวลา หลังจากนั้น RDP Session จะถูก Terminated (Logoff) แทนที่จะ Disconnect;
- Set time limit for logoff of RemoteApp sessions.
คุณสามารถหา RDP Timeout Settings เดียวกันใน User GPO Section: User Configuration -> Administrative Templates -> Windows Components โดยใช้ Policy จาก User Section คุณสามารถตั้งค่ากลุ่ม User ที่มี Limits ต่างๆ สำหรับความยาวของ RDP Sessions ได้อย่างยืดหยุ่นมากขึ้น

โดย Default ตัวเลือกเหล่านี้ Not Configured เพื่อ Terminate Disconnected RDP User Sessions อัตโนมัติใน 8 ชั่วโมง ให้ Enable Policy Set time limit for disconnected session และเลือก 8 hours ใน Dropdown List

Save Changes และ Update Group Policy Settings บน RD Host ของคุณ (gpupdate /force) การตั้งค่า Timeout ใหม่จะถูกนำไปใช้กับ RDP Sessions ใหม่เท่านั้น (คุณจะต้อง End RDS Sessions ปัจจุบันด้วยตนเอง)
คุณยังสามารถตั้งค่า RDP Session Time Limits ผ่าน Registry ได้ DWORD Parameters ต่อไปนี้จาก HKLM\SOFTWARE\Policies\Microsoft\Windows NT\Terminal Services สอดคล้องกับ Policies ที่อธิบายไว้ข้างต้น:
- MaxDisconnectionTime
- MaxIdleTime
- MaxConnectionTime
- MaxDisconnectionTime
- RemoteAppLogoffTimeLimit
ใน Windows Server 2008 R2 คุณยังสามารถตั้งค่า RDP Session Timeouts โดยใช้ Console พิเศษ: tsconfig.msc (RD Session Host Configuration) เพียงพอที่จะเปิด Console และคลิกขวา RDP-Tcp -> Properties การตั้งค่าขีดจำกัด Session อยู่ที่แท็บ Sessions อย่างไรก็ตาม ไม่มี Console เหล่านี้ใน Windows Server Versions ใหม่กว่า (แม้คุณจะ Copy ไฟล์ tsadmin.msc และ tsconfig.msc ด้วยตนเองและใช้ Console เหล่านี้บน Windows Server Versions ใหม่กว่าได้เช่นกัน)
