メモリオーバーコミット
Linux のメモリ管理サブシステムには「メモリ・オーバーコミット」という機構があり、実装されているメモリ以上の領域を確保できてしまう。
http://dsas.blog.klab.org/archives/50706324.html
1G のマシンなのに 3G もの領域を確保することができてしまう。
では、実際にメモリ不足が起きたらどうなってしまうのか。
ここで登場するのが有名な「OOM Killer」という仕組み。
Linux が実際にメモリ不足に陥ると、とあるアルゴリズムでいくつかのプロセスを選択し、それを勝手に kill してしまう。kill されるプロセスは、自分が何故落とされるのか知る由がない。
MySQL や PostgreSQL などの DBサーバでこの機構が動いてくれるのは嬉しいことではない。メモリ不足が原因で強制的にプロセスが落とされるくらいなら、DBサーバ自身でメモリ不足を検出してエラー処理をしたほうがまし。