どーもwasabeeです。
コロナの影響でテレワーク流行ってますね。
私は仕事柄、以前から顧客との打ち合わせ時等に自社の開発機にリモートデスクトップ接続して、実際に開発中のアプリケーションの挙動を見せながら仕様を詰めていったりということがよくあったので、テレワークとか余裕って思ってたんです。
しかし、
リモートデスクトップが固まる
という現象が最近よく発生するんです。
接続は切れてないんです。ただ、接続先の画面は変化しない。
仕方ないので一度切断して再度接続すると問題なく使える。
そんなことが一日に何回も起こるようになり、対策をいろいろと探していましたが、以下の方法を試したら発生しなくなりました。
RDPでの通信ではUDPを使わせない
これだけで超安定します。
おそらく原因はUDPパケットがエラーになった時にアプリ側でリトライがされないで処理がデッドロックになってる?みたいな感じなんでしょう。
簡単に説明するとUDPは相手が正常に受け取ったのかを確認しないで送りっぱなし。TCPは確認をして、もし受取れてなかったら再度送るというのをプロトコルのレベルで実装しています。
なのでRDPの通信はTCPのみで行うようにすればこの症状は発生しないはずなのです。
ではどう設定するか?手順は以下の通りです。
ローカルグループポリシーエディターを起動
Windowsキーを押してgpedit.mscと入力し、Enterで起動します。
RDPトランスポートプロトコルを編集
画面左のツリーを以下のように辿っていきます。
ローカルコンピューターポリシー → コンピューターの構成 → 管理用テンプレート → Windowsコンポーネント → リモートデスクトップサービス → 接続
ここまで開くと画面右側に
RDPトランスポートプロトコルの選択
という項目が出てきますのでダブルクリックして編集します。
最初はラジオボタンが未選択になっているので、それを有効にすると下のエリアでトランスポートの種類の選択が行えるようになるので、そこからTCPのみを使用に変更します。
ここまで終わったらシステムを再起動しましょう。
UDPが無効になっているのかを確認する
リモートデスクトップで接続したら画面上のノッチみたいな部分の電波マークみたいなアイコンをクリックすると、現在の接続品質を教えてくれます。ここのメッセージでUDPが有効というような文言が表示されなければUDPは無効になっています。
私はこの設定に変更してから一回も不具合は発生していません。
私はサーバー側(操作される側)の台数が数台と少なかったのでサーバー側の設定を変更しちゃいましたが、いろんなサーバーにRDPするって人はクライアント側でUDPを話さないようにするほうが楽かも知れないですね。クライアント側の設定については別記事で書きたいと思います。
それでは皆さん、快適なテレワークを!
コメント
コメント一覧 (2件)
自分の環境(Win10 Pro x64 1909)では、
ローカルコンピューターポリシー → コンピューターの構成 → 管理用テンプレート → Windowsコンポーネント → リモートデスクトップサービス → リモートデスクトップセッションホスト → 接続
でした。
kik0220さん
ビルドによって項目名やセクションが変更になってるのかも知れませんね。
情報ありがとうございました!