パフォーマンス低下または切断(9P ファイルシステム飽和)
WSL 上で(Remote - WSL 経由で)Windsurf を使用していると、エディタが遅くなったり、応答しなくなったり、WSL バックエンドとの接続が繰り返し切断されたりすることがあります。これは主に、WSL ファイルシステム上で過剰なファイル監視やインデックス作成を行う拡張機能が原因で発生し、その結果として、Windows と WSL Linux 環境間のファイルシステムブリッジである Plan 9 (9P) プロトコル が飽和してしまうことによります。 この問題は、特に大規模なリポジトリを扱っている場合や、複数の言語サーバーが同時に動作している場合に発生しやすくなります。症状
- WSL に接続しているとき、Windsurf の動作が明らかに遅い、またはカクつく
- エディタが頻繁に WSL バックエンドから切断され、再接続を試みる
- 切断は、(Cascade を使用しているときなどの)アクティブな開発中 および エディタがアイドル状態のときの両方で発生する
- Windsurf がクラッシュしたり応答しなくなり、IDE と WSL(
wsl --shutdown)の両方を再起動する必要がある - 32 GB 以上の RAM を搭載したシステムでも、時間の経過とともに WSL のメモリ使用量が増加していく
- WSL の診断ログに、大量の
P9 Reply_Rlerrorイベント(ファイルが見つからないエラー)が記録される - WSL の外で Windsurf を使用している場合(例: ローカルの Windows フォルダを開く)、パフォーマンスは正常である
- 一般的な回避策(WSL の再起動、Windsurf の再インストール、
.wslconfigのメモリ増量)だけでは問題が解決しない
根本原因
- プロトコルの処理能力が飽和する
- 数千件規模の「ファイルが見つからない」エラー (
Reply_Rlerror) が発生する - Windsurf と WSL バックエンド間の接続が切断される
- 時間の経過とともに WSL 内でメモリプレッシャーが増大する一因となる
解決方法
1. WSL 内での Windsurf サーバーのクリーン再インストール
2. インストールする拡張機能を最小限にする(効果大)
- WSL に接続した状態で Windsurf の Extensions パネルを開く
- WSL 環境にインストールされている拡張機能(ローカル側ではなく)を確認する
- 不要な拡張機能を無効化またはアンインストールする — 特に重いファイル監視やインデックス作成を行うもの
- Vue (Volar) — 非 Vue プロジェクトでも、9P ブリッジ越しに過剰なファイルインデックス作成を引き起こすことが確認されています。この拡張機能をアンインストールするだけで、複数ユーザーの切断問題が解消されています。
- その他のフレームワーク固有の言語拡張機能(Angular、Svelte など)も、現在のワークスペースで不要なのにインストールされている場合、同様の挙動をする可能性があります。
3. WSL のリソース制限を最適化する
%USERPROFILE%\.wslconfig ファイル(例: C:\Users\<YourUser>\.wslconfig)を作成または編集し、システムに適したリソース制限を設定します。
診断
9P エラーの WSL 診断ログを確認する
Reply_Rlerror イベントが高頻度で発生していないか確認してください。数千件(またはそれ以上)のイベントが記録されている場合、WSL 内の拡張機能やプロセスが過剰なファイルシステム要求を発行しており、9P ブリッジがそれに追いつけていない可能性があります。
どの対処法をいつ使うか
- WSL に多数の拡張機能をインストールしていて実際にはあまり使っていない場合、または別のエディタから拡張機能を移行してきた場合は、拡張機能を最小限に抑えます(最も効果の高い変更です)。
- サーバーのクリーン再インストールは、Windsurf サーバーの状態が破損している、または古くなっている可能性がある場合(例:アップデートの失敗や過去のクラッシュ後など)に実行します。
.wslconfigの最適化は、WSL がホストのリソースを過剰に消費している場合、またはこれまでリソース制限を設定していない場合に行います(WSL 全体の安定性向上につながります)。
VPN またはゼロトラストソフトウェア使用時に WSL に接続できない
VPN またはゼロトラストソフトウェア(Twingate、Tailscale、Zscaler、Cloudflare WARP、GlobalProtect など)が WSL 内部からのアウトバウンドネットワークトラフィックをブロックしている場合、Windsurf はCouldn't install vscode server on remote server, install script returned non-zero exit status エラーで WSL への接続に失敗します。
症状
- Windsurf が WSL への接続時に
Error resolving authority/install script returned non-zero exit statusを報告する - WSL 自体は動作する(
wsl -d Ubuntu -- echo helloは成功する)が、WSL 内部でcurlがタイムアウトする - VPN またはゼロトラストソフトウェアのインストールまたはアップデート後に問題が発生した
根本原因
WSL 2 はデフォルトで NAT ベースの仮想ネットワークを通じてトラフィックをルーティングします。VPN やゼロトラストソフトウェアは、この仮想ネットワークからのトラフィックを転送しないことが多いため、Windsurf サーバーのダウンロードがサイレントに失敗します。解決方法
1. ミラーリングネットワークを有効にする
WSL 設定ファイルを編集してミラーリングネットワークを有効にします(通常C:\Users\<YourUser>\.wslconfig)。
以下を追加してください:
注意: WSL 2.0.0+ が必要です。wsl --versionでバージョンを確認し、必要に応じてwsl --updateでアップデートしてください。
2. 代替策:VPN を一時的に切断する
.wslconfig を変更できない場合は、VPN/ZTNA を切断し、Windsurf にサーバーをインストールさせてから再接続してください。将来の Windsurf アップデートでは、再び WSL からのネットワークアクセスが必要になります。