MongoDB 5.X - illegal instruction (core dumped) 이슈
Data Engineering

MongoDB 5.X - illegal instruction (core dumped) 이슈

728x90
반응형

개요

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

 

728x90
반응형