コマンド実行時等で「-bash: fork: Cannot allocate memory」エラー
Linuxサーバーでコマンド実行時などで「-bash: fork: Cannot allocate memory」(bash: fork: メモリを確保できません)というエラーが発生し、動作が不安定になる現象があります。
原因確認方法
これは起動中のプロセスがメモリリークを起こし、使用可能なメモリが不足している状態です。
メモリ使用状況は下記コマンドで確認できます。
$ free -m
total used free shared buff/cache available
Mem: 983 198 563 0 221 649
Swap: 0 0 0
free コマンドで出力される free の部分が使用可能なメモリ領域です。この部分が少ないとメモリをallocateできなくなります。
具体的にどのプロセスがメモリを消費しているかは、下記コマンドで確認可能です。
$ ps auc --sort -rss
上記は、起動プロセスを使用メモリが多い順にソートして出力します。
メモリリークを起こしているプロセスがあれば、PIDを指定しkillコマンドで停止させることが可能です。
$ sudo kill -0 [PID]
コマンド自体を受け付けない状態の場合は、OS自体をリブートさせるしかない場合があります。