Edited at

VirtualBoxでSSH接続して色々作業(npm installとか)した時、あっちに逝ったまま帰ってこなくなる問題の対策


環境概要

JamstackやWordPressの開発専用環境としてVirtualBoxにlinux(Ubuntu 18.0.4)をインストールして、ターミナルやVs CodeのRemote-SSH機能でSSH接続してコマンド操作しています。


問題

SSHで重たいコマンド操作(npm installなど)をする際に冗長だったり処理が重かったり時間掛かり過ぎると、そのままハングして反応が無くなる。


解決方法

"/etc/security/limits.conf"でリソース制限をした。

詳しくはulimitでユーザリソースの制限(Linux)(インフラ勉強wiki)で。

上述の"limits.conf"を以下の様に設定。coderがユーザ名です。再ログインするだけで設定が反映されます。

coder hard nofile 1024

coder hard nproc 1000000
coder hard stac 1024

これで快適にnpm installやgridsome build / developなどをぶんまわせる様になりました。時々怪しくなる時もありますが、少し待てば動き始める事が殆どです。

なお"ulimit -a"をターミナルで叩けば、現在の設定値が一覧表示されます。

この設定はうちの会社(の様なもの)のレンタルサーバにSSHで接続して、ターミナルから"ulimit -a"して出てきた設定を参考にしました。


雑記

Macの黒い画面でnpmやったりとか色々してウエブ開発やるにはhomebrewをインストールしておけば、快適に開発できるものの、最近アップルがMacOSのセキュリティに力を入れ始めて面倒臭くなってまいりました。こんどのMacOSのバージョンアップでさらに面倒になりそうですし。

こんどのMacOS 10.15 Catalinaでは、デフォのシェルがzshに変わるらしい。10.16以降はPythonやRuby、Perlを同梱しなくなるとも。OSのアップグレードの度に、色々と無駄な作業が増えそうです。

Dockerを試してみました。お手軽なdocker環境が欲しい場合は、laradockがよかったです。WordPressとかも動かせます。ただし、dockerは肥大なキャッシュ(64GBとかそんな感じ)が障壁に。最近のお高いマックのSSDには負担すぎる。外部接続ディスクにキャッシュを移動できる事はできますが、少し使っているうちに色々ダルくなってきた。

というわけで、linuxの開発環境をそのままポータブルに扱える様に、Ubuntuで開発環境を作ってVirtualBoxで動かす事にしました。本体のSSDになるべく依存したくないのと、本体のSSDの空き容量を常に確保しておきたいため、開発環境は全てUSB3.0接続の外部SSDに置いています。管理作業はVirtualBoxからWindow ManagerでGUIを使えるので色々とお気楽。

VirtualBoxのUbuntuに、nodeやらアパッチやらを好きなだけインストールして、MacOS側からはsshやsambaで接続して操作する感じです。

念の為。時折切りが良い時に、開発環境が入った仮想マシンをエキスポートしておくのは必須です。たまに具合おかしくなりますから。