Visual Studio Code Remote Development はコンテナやリモートマシン、WSL環境の開発をサポートしてくれる強力な拡張機能です。
しかし私の環境では「めちゃめちゃ動作が遅い」と思いながら使っていたところ偶然解消できたため、似たような事象に遭遇してる方向けTipsとして投稿。
結論としてはネットワーク周りが原因である可能性が非常に高いです。
※詳細な動作原理はよくわかっていない状況ですので参考までに。
事象
Remote SSH 接続した状態であらゆるアクションに対して数秒~数十秒の遅延またはタイムアウトするという事象
例:
- "フォルダーを開く" 押下後のディレクトリスキャン
- 接続開始時のターミナル起動
- ターミナル、エディタ画面に文字入力してからのレスポンス
- 編集中ファイルの保存
環境
確認したのはRemote SSHを使う場合のみ。
- ホストOS: Windows 10 (192.168.0.1)
- 仮想環境: VMWare Player
- リモートサーバ: CentOS 8 (192.168.0.2)
- ネットワーク: ブリッジアダプタ
Client ---(SSH)--> Remote Server(192.168.0.2)
対応策
2種類の対応によって動作が改善しました。
※私の環境ではどちらか一方の対応でOKでした
1. ネットワークアダプタのインターネット共有許可
コントロールパネルから[ネットワーク接続]プロパティを開く
プロパティを開き[共有]タブ>[ネットワークのほかのユーザーに、このコンピューターのインターネット接続を通しての接続を許可する]にチェックを入れて、VMWare Network Adapter VMNet8を選択してOK
使用しているネットワークアダプタに[共有]という印がついていることを確認
※ブリッジアダプタはホストの物理NICを使用するはずなんですが、なぜVMNet8 アダプタの設定をいじることで改善するのか謎...
2. ホストPCのポートフォワード経由で接続
リモートサーバのIPアドレスを直接指定してアクセスするのではなく、一度ホストOSでポートフォワードしてからリモートサーバへ接続する
つまり
↓こうだったのを
Client ---(SSH)--> Remote Server(192.168.0.2)
↓こうする(あまり正確な図ではないが)
Client ---(SSH)---> Host PC(127.0.0.1:22) ---(Forward)--> Remote Server(192.168.0.2)
コマンドプロンプトを開き、以下コマンドを実行
netsh interface portproxy add v4tov4 listenport=22 listenaddr=127.0.0.1 connectport=22 connectaddress=192.168.0.2