RDP 切断による待ち時間の解決方法
リモートデスクトップセッションは、画面上部の「X」をクリックするだけで終了できます。ログオフではなく、ただ閉じるだけです。ところが、なんと、セッションは切断されたセッションとしてバックグラウンドで「アクティブ」なままになり、RAMを消費し、ファイル共有やプロファイルに支障をきたす可能性があります。さらに悪いことに、パスワード変更後にドメインアカウントがロックアウトされることもあります。面倒ですよね?これは単なる些細な不便ではなく、特に多くのセッションが集中すると、サーバーのリソースが肥大化し、問題を引き起こす可能性があります。すべてを整理し、スムーズに動作させるために、これらの切断されたセッションを一定時間後に自動的に終了するように設定することをお勧めします。このガイドでは、バックグラウンドのRDPセッションの自動ログオフを設定するための実用的な方法をいくつか紹介します。これにより、ゾンビセッションがメモリを大量に消費したり、競合を引き起こしたりすることがなくなります。Windows Serverを使用している場合でも、デスクトップを微調整したいだけの場合でも、役立つオプションがここにあります。手動操作なしでセッションがスムーズに終了し、システムリソースが解放され、煩わしいロックアウトを回避できます。
切断されたアイドル状態のリモート デスクトップ ユーザー セッションを自動的にログオフする
切断されたセッションをオンザフライで削除すると、リソースを節約でき、多くのフラストレーションを軽減できます。基本的に、セッション制限を設定すると、RDP サーバーはこれらの残留セッションを永久に維持しなくなります。代わりに、指定されたアイドル時間または切断時間が経過すると、Windows はそのセッションを強制終了します。役立つ理由: 切断されたセッションはメモリ内に残り、システム リソースを保持するだけでなく、開いているファイルに支障をきたしたり、プロファイルの問題を引き起こしたりする可能性があります。タイムアウトを設定すると、しばらくするとセッションがクリアされ、古いセッションが永久に残ることがなくなるため、システムがクリーンな状態になり、ユーザーの満足度も高まります。適用される場合: ユーザーが頻繁に切断してもログオフせず、セッションが漂っている場合。サーバーのメモリが不足し、リソースを解放する必要がある場合にも役立ちます。期待される結果: ポリシーまたは設定が適用されると、指定した時間制限が経過すると、残留セッションが自動的に切断されます。一部のマシンでは、手動でのセッションの再起動や GPUpdate が必要になる場合がありますが、ほとんどの設定はほぼシームレスに適用されます。 実用的なヒント: Windows Server 環境で、リモート デスクトップ サービスを使用している場合は、RDS コレクションの[サーバー マネージャー] > [セッション]タブに移動します。ポリシーを調整するには、次の操作を行います。- グループ ポリシー管理コンソール (gpmc.msc) を開きます。- [コンピューターの構成] > [ポリシー] > [管理用テンプレート] > [Windows コンポーネント] > [リモート デスクトップ サービス] > [リモート デスクトップ セッション ホスト] > [セッションの時間制限] に移動します。- [切断されたセッションの時間制限を設定する] を、たとえば 8 時間または適切な値に設定します。- また、[アイドル状態のリモート デスクトップ サービス セッションの時間制限を設定する] を 15 分などの適切な値に設定します。- 適用してから、gpupdate /forceRDS ホストで実行すると、すぐに有効になります。その他: MaxDisconnectionTime や MaxIdleTime などの DWORD を使用して、HKLM\SOFTWARE\Policies\Microsoft\Windows NT\Terminal Services のレジストリでこれらを調整することもできます。グループ ポリシーがすぐに有効にならない場合は、この方法の方が速い場合があります。現実世界の逸品: セットアップによっては、ポリシーによってサーバーの再起動や既存のセッションの手動ログオフが必要になる場合がありますが、ポリシーがアクティブになると、アイドル セッションが自動的に切断されるのを待つ必要がなくなります。 —
PowerShell を使用してタイムアウトを設定する
GPOだけでは不十分な場合や、即座に処理を行いたい場合など、セッション時間制限を迅速かつ柔軟に適用する方法として、PowerShell が挙げられます。最大切断時間を15分に設定する便利なコマンドは次のとおりです。powershell Set-ItemProperty “HKLM:\SOFTWARE\Policies\Microsoft\Windows NT\Terminal Services” -Name MaxDisconnectionTime -Type ‘DWord’ -Value 900000 このコマンドは、タイムアウトを900, 000ミリ秒(15分)に設定します。理由は定かではありませんが、これらの値を手動で設定すると、新しい Windows Server バージョンで発生する特定の問題を回避できる場合があります。—
セッションが長時間アイドル状態になると何が起こりますか?
これを設定すると、セッションが切断される前にユーザーに警告が表示されます。
Idle timer expired Session has been idle over its time limit. It will be disconnected in 2 minutes. Press any key to continue the session.
この警告は、EnableTimeoutWarning というWMI設定によって制御されます。この設定を0にすると、この警告は完全に無効になります。powershell Set-WmiInstance -Path “\\localhost\root\CIMV2\TerminalServices:Win32_TSSessionSetting. TerminalName=’RDP-Tcp'” -Argument @{EnableTimeoutWarning=0} このように設定すると、アイドル状態のセッションは警告なしに消えてしまいます。つまり、接続が突然切断され、ユーザーが驚く可能性があります。ユーザーへの警告は表示しつつ、ポップアップは表示したくない場合は、この設定を調整してください。—
まとめ
ゾンビ化したRDPセッションへの対応は面倒ですが、タイムアウトを設定することで、サーバーの稼働率とリソース効率を維持できます。ただし、これらの制限の設定は盲目的に行うべきではありません。短い時間制限は、ユーザーに警告がなければ煩わしく感じる可能性があるため、適切なバランスを見つけてください。最終的には、グループポリシー、レジストリ値、PowerShellなどを調整することで、リモートデスクトップ環境に伴うバックグラウンドの混乱をより細かく制御できます。事前に少し設定しておくことで、後々のトラブルシューティングに費やす時間を節約できる場合もあります。
まとめ
- グループ ポリシーまたはレジストリ でセッション タイムアウトを設定し、切断されたセッションやアイドル状態のセッションを自動的に終了します。
- 簡単な調整やスクリプト作成には PowerShell コマンドを使用します。
- セッションを静かに終了させたい場合は、タイムアウト警告を無効にします。
- タイムアウトが短すぎるとフラストレーションの原因になる可能性があるので、適切なバランスを見つけるようにしてください。
まとめ
これらのヒントが、RDPセッションの管理の負担を軽減してくれることを願っています。ご自身の環境に最適な設定を見つけ、微調整やテストを行ってください。1台のマシンでは、完全に機能させるには再起動や手動ログオフが必要になるかもしれませんが、一度設定してしまえば、無限に続くバックグラウンドセッションによるリソースの浪費から解放されます。この方法がお役に立てば幸いです。私の場合は複数のサーバーでうまくいきましたので、皆さんにもきっと効果があるでしょう。