LoginSignup
5
4

More than 1 year has passed since last update.

VS Code の Remote Development は仕組みを理解してないと危ない

Posted at

Visual Studio Code には便利なExtensionが色々ありますよね
Remote Development に含まれる Remote SSH というのを便利だから使っていたんですが
ちょっと問題を起こしてしまったので備忘録です
そんなことも知らなかったのかと言われそうで怖いんですが

経緯

  • とある仕事の開発環境がAWSのインスタンス上に構築
  • 構造上ローカルでの動作確認が無理だったので編集はローカル、確認はファイルを都度アップロードしサーバー上で
  • vim で直接いじるの慣れてなくて辛いし編集した都度 winscp でやり取りするのもなぁ・・・
  • VScodeでどうにかできんか?軽くググったら Remote SSH 出てくるし便利だなぁこれ
  • 管理者「それちょっとやばいんで使うのやめてください」

何が起きていたか

Remote SSH (Remote Development) の仕組みは単にSSH接続してファイル編集できるというものではなく
接続した先の環境上に vscode-server というのをインストールして vscodeの機能を持ったサーバーを起動、そこに接続してなんやかんやするものでした
この vscode-server が曲者でメモリやディスクといったリソースを遠慮なくバカ食いしポートも空いているところを勝手に使用するそう

USER       PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
(略)
myuser  2538  0.0  0.0 119848   188 ?        S    00:03   0:00 sh /home/myuser/.vscode-server/bin/622cb03f7e070a9670c94bae1a45d78d7181fbd4/server.sh --start-server --host=127.0.0.1 --enable-remote-auto-shutdown --port=0 --connection-secret /home/myuser/.vscode-server/.622cb03f7e070a9670c94bae1a45d7
myuser  2546  0.0  2.7 1008360 56036 ?       Sl   00:03   0:17  \_ /home/myuser/.vscode-server/bin/622cb03f7e070a9670c94bae1a45d78d7181fbd4/node /home/myuser/.vscode-server/bin/622cb03f7e070a9670c94bae1a45d78d7181fbd4/out/vs/server/main.js --start-server --host=127.0.0.1 --enable-remote-auto-shutdo
myuser  2680  2.9  5.7 1204864 114760 ?      Sl   00:03  13:41      \_ /home/myuser/.vscode-server/bin/622cb03f7e070a9670c94bae1a45d78d7181fbd4/node /home/myuser/.vscode-server/bin/622cb03f7e070a9670c94bae1a45d78d7181fbd4/out/bootstrap-fork --type=extensionHost --uriTransformerPath=/home/yuta.matsu
myuser  2716  0.6 15.3 1139148 307560 ?      Sl   00:03   2:50      |   \_ /home/myuser/.vscode-server/bin/622cb03f7e070a9670c94bae1a45d78d7181fbd4/node /home/myuser/.vscode-server/extensions/bmewburn.vscode-intelephense-client-1.6.3/node_modules/intelephense/lib/intelephense.js --node-ipc --client
myuser  2691  0.0  1.1 881344 22788 ?        Sl   00:03   0:06      \_ /home/myuser/.vscode-server/bin/622cb03f7e070a9670c94bae1a45d78d7181fbd4/node /home/myuser/.vscode-server/bin/622cb03f7e070a9670c94bae1a45d78d7181fbd4/out/bootstrap-fork --type=watcherService

当時の開発環境のメモリは2GBでした、その上でなんか使用率15%とか見えますね

[myuser@ip-XXX-XX-XX-XXX .vscode-server]$ pwd
/home/myuser/.vscode-server
[myuser@ip-XXX-XX-XX-XXX .vscode-server]$ du -sh *
408M    bin
101M    data
75M     extensions

インストールされた vscode-server のファイルサイズもなかなか男前ですね

一人でこんなにリソースを食っているうえにその人専用なので
別の人がRemote SSHを使った場合その分その人専用でリソースが取られていきます

これをチーム内の3人くらいがそれぞれ使ってた結果、それだけで開発環境の大部分のリソースを食い尽くし
サーバーがダウン寸前まで行く不調を起こして注意を受けたということがありました

※参考記事
https://qiita.com/Ishotihadus/items/469b8f59ce74333a0a2e#remote-development

結論

  • Remote SSH(Remote Development) は便利だけどヤバい
  • ググるとベタ褒めする記事ばっかり見つかるから気軽に使用されそう、実際その一人だった
  • 拡張機能各種は共用の環境で使って大丈夫なものなのか要注意
  • 共有する環境ではなく確実に個人だけが使う環境なら自己責任で使う選択肢はある

代替策

sftp という拡張機能を使うようにしました。
https://rfs.jp/sb/vsc/vscsftp.html

リモート編集しているのとほぼ変わらない操作感だったので便利でした
少なくとも今回やりたかったことはsftpで充分カバーできた

5
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
4