PostgreSQLをOOM Killerから守る「Strict Overcommit」—— Ubicloudが8GBマシンに651GBのコミット済みメモリを発見するまで
DRANK

7月3日、Ubicloudが「PostgreSQL and the OOM Killer: Why We Use Strict Memory Overcommit」と題した記事を公開した。この記事では、PostgreSQLをOOM Killerから守るためにStrict Memory Overcommitを採用する理由と、運用中に遭遇した「8GBのサーバで651GBのコミット済みメモリ」というLinuxカーネルバグの調査・特定の経緯が詳しく紹介されている。1件のOOM Killがサーバ上の全PostgreSQL接続を道連れにする——これがPostgreSQLの本質的な弱点だ。Linuxのvm.overcommit_memory=2(Strict Overcommit)を適用することで「破滅的な全停止」を「単一トランザクションのエラー」に格下げできる。しかしUbicloudがこれを有効化したところ、Linux 6.5カーネルの潜在的なバグが初めて実害として顕在化した。以下にその経緯を紹介する。

by @tf_official
Related Topics: PostgreSQL Linux Server Monitoring