Infra/CI | CD

[Sonarqube][Error] Process exited with exit value [es]: 78 _ max virtual memory areas vm.max_map_count [65530] is too low, increase to at least [262144] 에러 해결

kth990303 2022. 8. 18. 18:40
반응형

정적 코드 분석 툴인 sonarqube(소나큐브)를 띄우려 하던 도중, 아래와 같은 에러가 발생했다.

 

ERROR: [1] bootstrap checks failed [1]:

max virtual memory areas vm.max_map_count [65530] is too low, increase to at least [262144]

Process exited with exit value [es]: 78 

Process[es] is stopped

SonarQube is stopped

 

소나큐브 EC2 db를 h2에서 postgreDB로 마이그레이션했더니 vm.max_map_count이 부족하다는 에러가 떴다.

ec2 인스턴스의 vm.max_map_count를 늘려줘야겠다.


세팅 방법

1. 아래 명령어를 sonarqube ec2에서 입력해주자.

# 커널 매개변수 설정 파일 접속
sudo vi /etc/sysctl.conf

 

2. 해당 파일의 맨 끝에 아래 정보를 입력해주자.

vm.max_map_count=524288
fs.file-max=131072
ulimit -u 8192

vm.max_map_count프로세스에서의 메모리 맵 영역의 최대 수를 의미한다. sonarqube에서 사용되는 elastic search는 최소 262144 이상을 요구하므로 위와 같이 2배에 해당되는 524288로 설정해주었다.

fs.file-max는 커널에서 동시에 다룰 수 있는 최대 파일 개수를 의미한다. 여기서는 131072개로 설정해주었다.

ulimit -u 명령어로 커널에서 동시에 다룰 수 있는 최대 프로세스 개수를 설정해준다.

 

3. 아래 명령어를 마찬가지로 sonarqube ec2에서 입력해주자.

# 리눅스 세팅 관련 파일 접속
sudo vi /etc/security/limits.conf

 

4. 해당 파일의 맨 끝에 아래 정보를 입력해주자.

*   -   nofile  131072
*   -   nproc   8192

마찬가지로 커널에서 동시에 다룰 수 있는 최대 파일 개수, 최대 프로세스 개수를 의미한다.


여기까지 하면 영구적으로 메모리 세팅을 완료한 것이긴 하다. 하지만, 파일 수정만으로는 바로 적용이 되지 않을 수도 있다.

따라서 런타임 중에 커널 매개변수 값을 변경해주는 sysctl 명령어를 이용해 지금 바로 적용시킬 수 있도록 하자.

 

 

4-1. sonarqube ec2에서 아래 명령어를 입력해주자.

sudo sysctl -w vm.max_map_count=524288

cat /proc/sys/vm/max_map_count 명령어를 입력하면 현재 vm.max_map_count를 확인할 수 있다.

 

 

성공적으로 vm.max_map_count가 변경된 것을 확인할 수 있다.


참고

 

 

반응형