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で充分カバーできた