jemalloc으로 Postgres 메모리 누수 디버깅하기
작성자: Phil Eaton게시일: 2025년 6월 21일 지난 1년간 저는 Postgres의 메모리 누수를 디버깅하는 다양한 도구들에 대해 소개해왔습니다. Valgrind, AddressSanitizer, memleak, heaptrack 등을 다뤘지만, 아직 살펴볼 가치가 있는 도구가 몇 가지 남아 있습니다. 오늘은 Meta가 만든 대체 malloc 구현체인 jemalloc을 활용한 메모리 누수 탐지 방법을 살펴보겠습니다. jemalloc이란? Google의 tcmalloc, Microsoft의 mimalloc, Meta의 jemalloc처럼 많은 기업들은 표준 malloc 대신 성능이나 기능이 개선된 자체 구현체를 사용합니다. 이 중 jemalloc은 메모리 누수 탐지 기능이 특히 뛰어납니다. 이유는 AddressSanitizer가 탐지하지 못하는 경우까지 jemalloc은 캐치할 수 있기 때문입니다. 예를 들어 프로세스 종료 시 정리되긴 하지만 OOM(Out of Memory)을 간헐적으로 유발하는 누수는 jemalloc이 보다 잘 잡아냅니다. 참고: FreeBSD, Apache Arrow도 jemalloc을 사용합니다. 실험 시나리오: jemalloc으로 Postgres 메모리 […]