Ubuntu 16.04 マシンがメモリ不足の状態をどのように処理するかをテストしていたところ、サーバー上の RAM をほぼすべて使い果たした一時停止中のジョブがいくつかありました。昨夜仕事を終えたとき、通常の bash コマンドはまだ実行できました。朝 (サーバーに対して誰も何もしていなくても)、すべてのコマンド ( ps
、、free
などls
) で次のエラーが発生しました。
-bash: fork: Cannot allocate memory
jobs
最終的にはマシンを実行して回復することができましたkill %1
。SSH セッションを開いたままにしておいてよかったです。それ以降の SSH 接続は失敗したからです (クライアントは認証後にコマンド プロンプトを表示しませんでした)。
通常のユーザーランドプログラムが、SSHセッションが存在しない場合は強制的に再起動しなければならないほどサーバー全体をダウンさせることができるという事実は、非常に心配です!私の理解では、Linux (または実際にはどの OS でも) は、システム全体が使用不可能な状態になる前にプロセスを強制終了して RAM を解放するはずです。どうすればそれができるでしょうか?