[팁] 리눅스 커널 v6.18+ 에서의 몽고DB 실행 불가 문제 - 리무스BBS

증상

Ubuntu 26.04 LTS로 업그레이드한 뒤 MongoDB 컨테이너가 약 30초 간격으로 계속 재시작되는 현상이 발생했다.

서비스 입장에서는 요청이 간헐적으로 3~5초씩 멈추는 현상으로 관측됐다. MongoDB가 죽는 타이밍에 들어온 쿼리가 재시작 대기 시간 동안 블로킹되는 것이었다.

원인

Linux 커널 6.19 이상에서 MongoDB 8.x 전체가 호환되지 않는다.

MongoDB JIRA: SERVER-121912

Ubuntu 26.04 LTS는 Linux 커널 7.0.x를 기본 탑재한다. MongoDB 8.x는 메모리 할당자를 기존 jemalloc에서 tcmalloc-google으로 교체했는데, 이 tcmalloc-google이 커널의 rseq(restartable sequences) 기능을 직접 syscall로 사용한다. 커널 6.19에서 rseq 관련 동작이 변경되면서 MongoDB 8.x가 충돌하게 됐다.

버전별 차이

버전증상
MongoDB 8.0.x시작 시 명시적 오류 출력 후 거부
MongoDB 8.2.x오류 없이 약 30초 후 segfault

 

 

 

 

 

MongoDB 8.0.x에서 출력되는 오류 메시지:

MongoDB cannot start: Linux kernel versions 6.19 and newer has a known
incompatibility with this version of MongoDB.
See https://jira.mongodb.org/browse/SERVER-121912 for more information.

GLIBC_TUNABLES 워크어라운드가 통하지 않는 이유

흔히 알려진 GLIBC_TUNABLES: glibc.pthread.rseq=0 환경변수 설정은 glibc의 rseq 사용만 비활성화한다. 그러나 MongoDB 8.x의 tcmalloc-google은 glibc를 거치지 않고 직접 rseq syscall을 호출하기 때문에 이 워크어라운드가 효과가 없다.

해결 방법

단기: MongoDB 7.x LTS 사용

MongoDB 7.x는 tcmalloc-google 대신 jemalloc을 사용하여 이 문제가 없다.

docker-compose.yaml:

mongo:
  image: mongo:7   # mongo:latest 대신 버전 고정

단, MongoDB는 데이터 포맷 하위 호환이 안 된다. 8.x로 쓴 데이터 파일을 7.x가 읽지 못하므로, 기존 데이터가 있다면 mongodump / mongorestore로 마이그레이션이 필요하다.

장기: MongoDB 패치 대기

SERVER-121912 이슈가 해결되면 패치 버전에서 커널 6.19+ 호환성이 복구될 예정이다. 그 이후 mongo:latest로 복귀 가능하다.

Ubuntu 24.04 LTS는 괜찮은가?

Ubuntu 24.04 LTS는 커널 6.8.x를 기본 탑재하므로 MongoDB 8.x와 호환된다. Ubuntu 26.04 클린 설치도 동일한 커널 버전 문제가 발생한다.

참고: 관련 경고 메시지들

MongoDB 8.x 시작 시 로그에 아래 경고들이 함께 출력된다. THP 설정으로 해결하려 해도 근본 원인(rseq)이 달라 충돌은 계속된다.

Soft rlimits for open file descriptors too low (currentValue: 1024, recommendedMinimum: 64000)
For customers running tcmalloc-google, suggest changing transparent_hugepage/enabled to "always"
We suggest setting swappiness to 0 or 1

ulimits 조정이나 THP 활성화는 보조적인 권장 사항이지, 이 충돌의 해결책이 아니다.

 

결론

 

----------

머루아저씨
✨ Full-stack Developer | 최신 기술 애호가
💻 현개발환경: PHP 8.4, Swoole, MongoDB, Redis, Docker
⚙️ Ubuntu/Linux 환경 & VS Code SSH 기반 작업
📚 "지속 가능한 개발, 효율적인 코드"를 지향합니다.