개요
MongoDB 5.0.X 이상 버전에서 발생하는 illegal instruction (core dumped) 이슈에 관한 원인 및 해결 방법 정리
상세
이슈 상세
몽고디비 5.0.X 이상 버전 설치 후 실행 시 illegal instruction (core dumped) 에러와 함께 실행이 불가한 현상
발생 원인
"서버 CPU에서 AVX (Advanced Vector Extension)을 지원하지 않아 문제 발생"
공식 문서를 확인한 결과 몽고디비 5.0 버전 부터
intel AVX (intel Advanced Vector Extension / 여러 연산 집합을 하나의 chunk로 한번에 처리하여 연산 속도를 향상)
을 지원하는 CPU에서 설치 및 실행이 가능하다고 명시되어 있음
https://www.mongodb.com/docs/manual/administration/production-notes/#recommended-platforms
Production Notes — MongoDB Manual
Docs Home → MongoDB ManualThis page details system configurations that affect MongoDB, especially when running in production.For running in production, refer to the Recommended Platforms for operating system recommendations.MongoDB 4.0 may lose data duri
www.mongodb.com
자신이 사용하는 CPU가 AVX 또는 AVX2를 지원하는 CPU인지는
https://en.wikipedia.org/wiki/Advanced_Vector_Extensions#CPUs_with_AVX
Advanced Vector Extensions - Wikipedia
From Wikipedia, the free encyclopedia Jump to navigation Jump to search Extensions to the x86 instruction set architecture for microprocessors from Intel and AMD Advanced Vector Extensions (AVX) are extensions to the x86 instruction set architecture for mi
en.wikipedia.org
링크를 통해 확인하거나 리눅스에서 간단한 커맨드로 확인이 가능한데
cat /proc/cpuinfo | grep avx
실행 결과 avx 관련 내용이 출력되면 정상적으로 avx를 사용할 수 있는 CPU라고 보면된다.
해결 방안
이 문제가 발생하는 케이스는 아마 크게 두 가지 일 것이라고 생각하는데
1. VM 서버 내 CPU가 AVX를 지원하긴 하지만, 활성화 되어 있지 않은 경우
2. 단순히 CPU가 AVX 지원을 하지 않는 경우
1 번의 경우 관련 검색어로 서치하다보면 비슷한 케이스의 해결사례를 쉽게 볼 수 있다.
다만 2 번 케이스,,,,
만약, 자신의 CPU가 AVX를 지원하는 모델이 아니라면,, CPU 업그레이말고는 방법이 없다..
아니면 4.4 버전을 사용하거나…
2 번 케이스를 해결하는 방법을 찾아야하지만, 이 이상 확실한 방법은 찾지 못했다..
혹시 아시는 분이 계신다면 코멘트 부탁드립니다..
그럼 왜?
마지막으로 그럼 왜 몽고 5.0부터 avx를 지원하는 cpu를 필요로 하는지 고민해보자
하나의 글을 찾을 수 있었는데 그 글에서 설명하는 이유는 매우 두루뭉실하다.
1. 기본 스토리지 엔진인 와이어드 타이거 엔진의 업데이트
2. 최적화된 avx 기반의 memcpy 메서드를 사용하면
메모리 매핑 영역에서 다른 애플리케이션의 버퍼로 데이터를 복사하는 것이 가능
결국 와이어드 타이거의 업데이트로 인해 더 복잡한 연산을 빠르게 수행하기 위해 avx를 필요로하게 되었다.
정도로 정리해볼 수 있을 것 같다.
해당 내용은 아래 링크에서 확인 가능하다.
https://engineering.mongodb.com/post/getting-storage-engines-ready-for-fast-storage-devices
Getting storage engines ready for fast storage devices — The MongoDB Engineering Journal
At MongoDB, we converted the WiredTiger storage engine to use memory-mapped files instead of system calls for I/O, and to batch the overhead of file-system housekeeping operations. These changes improved performance by up to 63% on some I/O-intensive bench
engineering.mongodb.com
'Data Engineering' 카테고리의 다른 글
MongoDB 훑어보기 1(개요) (0) | 2022.05.31 |
---|---|
Grafana Migration (sqlite3 to MySQL) (2) | 2022.05.27 |
2.1.3 엘라스틱 서치 구성 요소 및 구조 (인덱스/샤드/세그먼트) (0) | 2022.02.14 |
맥에서 하둡 설치하기 (1) | 2021.11.15 |
2.1.2 엘라스틱 서치의 구성 요소 및 구조 (노드) (0) | 2021.11.02 |