Mặc định, khi người dùng đóng cửa sổ phiên RDP/RDS trong terminal client (mstsc.exe, RDCMan hoặc Remote Desktop HTML5 web client) bằng cách chỉ nhấp vào dấu X ở góc trên bên phải mà không đăng xuất, phiên của họ chuyển sang chế độ disconnected. Ở chế độ này, tất cả ứng dụng, tệp mở và cửa sổ vẫn chạy trên máy chủ desktop từ xa và tiêu tốn tài nguyên.
Mặc định, phiên RDP của người dùng trong Windows có thể ở trạng thái disconnected cho đến khi bị chấm dứt bởi người dùng hoặc quản trị viên, hoặc cho đến khi máy tính khởi động lại. Điều này khá tiện lợi, vì người dùng có thể bất kỳ lúc nào kết nối lại phiên desktop từ xa cũ và tiếp tục làm việc với chương trình đang chạy hoặc tệp mở.
Trong ảnh chụp màn hình sau, bạn thấy các phiên người dùng disconnected trên máy chủ RDS chạy Windows Server 2016 đang sử dụng khoảng 40% RAM máy chủ. Ngoài ra, các phiên này có thể khóa tệp mở trên máy chủ tệp, gây vấn đề lưu dữ liệu không đúng trong ứng dụng, thư mục roaming profile hoặc User Profile Disks.
Sử dụng lệnh quser, bạn có thể xem khi nào phiên RDP người dùng bắt đầu, thời gian idle và trạng thái phiên hiện tại.
Để tự động chấm dứt phiên RDP/RDS disconnected trong một khoảng thời gian chỉ định, bạn cần đặt đúng giới hạn phiên (timeouts).
Nếu bạn dùng máy chủ RDS, bạn có thể cấu hình tham số timeout phiên trong cài đặt RDS collection trên tab Session.
Chỉ định khoảng thời gian sau đó bạn muốn kết thúc phiên desktop từ xa disconnected, trong tùy chọn End a disconnected session (mặc định, thời gian phiên không giới hạn – Never). Bạn cũng có thể đặt thời gian tối đa phiên hoạt động (Active session limit) và kết thúc phiên idle (Idle session limit). Các timeout cứng này áp dụng cho tất cả phiên trong RDS collection.
Bạn cũng có thể đặt giới hạn phiên RDP trong thuộc tính người dùng cục bộ (lusrmgr.msc) hoặc người dùng miền (dsa.msc — Active Directory Users and Computers).
Không nên đặt timeout phiên RDP quá ngắn, nếu không phiên người dùng sẽ bị chấm dứt gần như ngay sau khi chúng trở nên không hoạt động.
Trong Windows Server 2012 R2/2016/2019, bạn có thể đặt timeout phiên RDP bằng Group Policies. Bạn có thể làm trong trình chỉnh sửa GPO miền (gpmc.msc) hoặc Local Group Policy Editor (gpedit.msc) trên máy chủ RDS hoặc client (nếu dùng Windows desktop làm terminal server).
Cài đặt timeout phiên RDP nằm trong phần GPO sau Computer Configuration -> Policies -> Administrative Templates -> Windows Components -> Remote Desktop Services -> Remote Desktop Session Host -> Session Time Limits. Các cài đặt timeout Remote Desktop sau khả dụng:
- Set time limit for disconnected session;
- Set time limit for active but idle Remote Desktop Services sessions — chính sách cho phép chấm dứt phiên RDP idle không có đầu vào người dùng (như di chuyển chuột hoặc gõ bàn phím);
- Set time limit for active Remote Desktop Services sessions — đây là thời gian tối đa của bất kỳ phiên RDP nào (ngay cả phiên hoạt động), sau đó nó bị ngắt kết nối;
- End Session when time limits are reached — đặt thời gian, sau đó phiên RDP sẽ bị chấm dứt (logoff) thay vì ngắt kết nối;
- Set time limit for logoff of RemoteApp sessions.
Bạn có thể tìm thấy cùng cài đặt timeout RDP trong phần GPO người dùng: User Configuration -> Administrative Templates -> Windows Components. Sử dụng chính sách từ phần người dùng, bạn có thể linh hoạt hơn cấu hình nhóm người dùng với giới hạn khác nhau về độ dài phiên RDP.
Mặc định, các tùy chọn này không được cấu hình. Để tự động chấm dứt phiên RDP người dùng disconnected sau 8 giờ, bật chính sách Set time limit for disconnected session và chọn 8 hours trong danh sách thả xuống.
Lưu thay đổi và cập nhật cài đặt Group Policy trên máy chủ RD của bạn (gpupdate /force). Cài đặt timeout mới sẽ áp dụng cho phiên RDP mới (bạn sẽ phải kết thúc phiên RDS hiện tại thủ công).
Bạn cũng có thể đặt giới hạn thời gian phiên RDP qua registry. Các tham số DWORD sau từ HKLM\SOFTWARE\Policies\Microsoft\Windows NT\Terminal Services tương ứng với các chính sách trên:
- MaxDisconnectionTime
- MaxIdleTime
- MaxConnectionTime
- MaxDisconnectionTime
- RemoteAppLogoffTimeLimit
Trong Windows Server 2008 R2, bạn cũng có thể đặt timeout phiên RDP bằng bảng điều khiển đặc biệt: tsconfig.msc (RD Session Host Configuration). Chỉ cần mở bảng điều khiển và nhấp chuột phải RDP-Tcp -> Properties. Cài đặt giới hạn phiên nằm trên tab Sessions. Tuy nhiên, không có bảng điều khiển này trong các phiên bản Windows Server mới hơn (dù bạn có thể sao chép thủ công tệp tsadmin.msc và tsconfig.msc và dùng các bảng điều khiển này trên Windows Server mới hơn).