Ubuntu 14.04 デスクトップでもこの問題に直面しました。
free -m
これらの基本的なコマンドでも Can't allocate memory エラーが表示されました。調査したところ、システムがすべてのメモリをキャッシュに使用しており、メモリを解放していないことがわかりました。これはキャッシュ バルーニングと呼ばれ、キャッシュをクリアすることで解決しました。
私の場合、OS はメモリではなく PID を使い果たしていましたが、エラー メッセージは同じでした。
最大 PID 番号のデフォルト値は 32768 です。値を表示するには、実行してください
cat /proc/sys/kernel/pid_max
最大 pid 番号を変更するには、
を実行します。echo 100000 > /proc/sys/kernel/pid_max
私のシナリオでは、根本的な原因は、1 つの Java プロセスが 18k 以上のスレッドを生成したことでした (Linux カーネルでは、スレッドは本質的にプロセスです)。各プロセスのスレッド数を調べるために、
を実行します。ps -eo nlwp,pid,args --sort nlwp