皆さん、VSCodeを使っている際に動作が重いと感じたことがないですか?
特に、VSCodeの拡張機能のremote-sshを使ってssh接続すると、すぐに接続が切れて再接続した経験はありませんか?
VSCodeを軽くするための方法
VSCode自身が多くのリソースを消費するため、ssh接続先のサーバがメモリの限界を迎え、接続を解除される。
拡張機能を見直そう
まずは、下記の記事を参考に、watcher Excludeを適切に設定し、監視ファイルを限定する。この設定では例えば、Gitがどのファイルの変更を追跡するかである。この設定を何もしない場合は、すべてのファイルを監視するため、ファイルの変更をした際にVSCodeのソース管理のところに変更が反映される。しかし、すべてのファイルを管理する場合は、大きいプロジェクトになるとそれだけでリソースを消費する。そのため、追跡する必要がないnode_modules
やvender
などのファイルを設定すればよい。
もしそれでもremote-sshが切断される場合は、**
を追加することで、すべてのファイルを追跡しないように設定できる。この場合、Gitのソース管理は変更を検知しないので、リロードボタン(下の画像の赤で囲んだボタン)を押さないとファイルの変更を反映できない。
次に、拡張機能の必要性を考える。拡張機能の中には、リソースの消費が、多いものがある。そのため、ssh接続がすぐ切断されてしまう場合には、これらの拡張機能を無効にして試してみよう。
Typescriptを用いた開発の設定
Typescriptには、ビルドインでもともとインストールされている「TypeScript と JavaScript の言語機能」という拡張機能がある。どうやらこの拡張機能が多くのリソースを消費するようだ。そのため、setting.jsonに次の設定を行うことでTypescriptを用いた開発の動作を改善することができるかもしれない。
"typescript.tsserver.experimental.enableProjectDiagnostics": false,
"typescript.tsserver.log": "off",
"typescript.disableAutomaticTypeAcquisition": true,
こちらの記事参照
現在のメモリ使用量を確認しよう
ここまでの設定を行っても、改善しない場合は、ssh接続先のサーバのメモリ使用状況を確認しよう。
もしかすると、想定外のプロセスが走っていてメモリを無駄に食っている可能性がある。
Linuxの場合は次のコマンドで確認することができる。
まずは、free
により、メモリの使用量を確認する。
$ free -h
total used free shared buff/cache available
Mem: 15Gi 6Gi 3Gi 1Gi 6Gi 8Gi
Swap: 2Gi 0Gi 2Gi
- total:システムに搭載されているメモリの合計量
- used:現在使用中のメモリ量
- free:完全に未使用のメモリ量
- shared:複数のプロセス間で共有されているメモリ量
- buff/cache:バッファやキャッシュとして確保されているメモリ量
- available:新しいプロセスが使用可能なメモリ量(free + buff/cache とは異なり、すぐに利用できる分を計算)
つまり、availableを見ることで、今後利用できるメモリを確認することができる。
次に、ps aux
により、現在走っているプロセスが割り当てられているメモリを確認することができる。
$ ps aux --sort=-$mem | head -n 5
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
root 1234 5.0 10.5 8000000 4200000 ? Ssl 10:00 2:30 /usr/lib/firefox/firefox
root 5678 3.2 8.3 6000000 3200000 ? Ssl 09:50 1:45 /opt/google/chrome/chrome
user 11223 2.1 6.7 5000000 2700000 ? Sl 11:30 1:15 /usr/bin/gnome-shell
mysql 9876 1.5 5.8 4000000 2300000 ? S 08:15 0:55 /usr/sbin/mysqld
これを実行することで、メモリ使用量が多いプロセスの上位5個を表示することができる。
ここから、必要のないプロセスを終了(kill)することでメモリを開放することができる。
ちなみに、特定のプロセスを終了(kill)する方法は以下の通りである。
$ kill <プロセスID>
プロセスIDは、先ほどプロセスを検索した(ps aux ~~~
)際に出てきたPIDの値を入力する。もしこれでプロセスを終了することができない場合は、-9を指定することで、強制終了することができる。しかし、強制終了すると次に同じプロセスを走らせるときにエラーを生じる可能性があるのでお勧めはできない。
kill -9 <プロセスID>
ここまでが、私が知っている限りのVScodeを軽くする方法である。もし、自分のパソコンのメモリが少ない場合やssh接続先のサーバのメモリが少ない場合には試してみてほしい。
私自身、まだまだ勉強中のため、誤っている部分があるかもしれません。
もし間違いがありましたら、修正のリクエストやコメントで教えていただけると嬉しいです。