본문 바로가기
Application

[SonarQube] 소나큐브 구동 시 vm.max_map_count Error 해결하기

by 선인장 🌵 2022. 3. 19.
728x90
728x90

소나큐브 구동 시 vm.max_map_count Error 해결하기

SonarQube(소나큐브)를 설치 후 구동 시 시스템 설정에 따라서 구동이 되지 않고 아래와 같은 vm.max_map_count 관련 Error(에러)를 발생하는 경우가 있다.

해당 경우는 vm.max_map_count의 설정값이 애플리케이션에서 필요로 하는 수보다 작음에 따라서 발생하는 경우이다.

그럼 해당 에러를 어떻게 해결하는지 한번 알아보도록 하자.

[SonarQube] 소나큐브 구동 시 vm.max_map_count Error 해결하기

1. 에러 발생 내용 확인

일단 현재 소나큐나를 구동하면 실행이 되지 않아서 우선적으로 console이라는 옵션을 통해서 소나큐브를 구동시켜 보았다.

소나큐브를 구동 시 start로도 가능하나, Log 등을 직접 콘솔 화면에서 볼 수 있도록 console 옵션이 존재하며 해당 옵션으로 실행 후 종료 시 소나큐브 서비스도 같이 중지된다.

그래서 console 옵션은 지금처럼 문제가 발생되는 경우 등과 같이 직접적으로 확인이 필요한 경우 사용하도록 하자.

  • $ ./sonar.sh console
# 소나큐브 Console 옵션으로 실행

$ ./sonar.sh console
Running SonarQube...
wrapper  | --> Wrapper Started as Console
wrapper  | Launching a JVM...
jvm 1    | Wrapper (Version 3.2.3) http://wrapper.tanukisoftware.org
jvm 1    |   Copyright 1999-2006 Tanuki Software, Inc.  All Rights Reserved.
jvm 1    |
... 이하 생략 ...
jvm 1    | ERROR: [1] bootstrap checks failed. You must address the points described in the following [1] lines before starting Elasticsearch.
jvm 1    | bootstrap check failure [1] of [1]: max virtual memory areas vm.max_map_count [65530] is too low, increase to at least [262144]
jvm 1    | ERROR: Elasticsearch did not exit normally - check the logs at /data/programs/sonarqube-9.3.0.51899/logs/sonarqube.log
jvm 1    | 2022.03.19 11:30:59 WARN  app[][o.s.a.p.AbstractManagedProcess] Process exited with exit value [es]: 78
jvm 1    | 2022.03.19 11:30:59 INFO  app[][o.s.a.SchedulerImpl] Process[es] is stopped
jvm 1    | 2022.03.19 11:30:59 INFO  app[][o.s.a.SchedulerImpl] SonarQube is stopped
wrapper  | <-- Wrapper Stopped

1. 에러 발생 내용 확인
1. 에러 발생 내용 확인

해당 경우는 vm.max_map_count의 설정값이 애플리케이션에서 필요로 하는 수보다 작음에 따라서 발생하는 경우이다.

참고로 vm.max_map_count Error의 경우 Elasticsearch(일래스틱서치) 구동 시에도 많이 발생하는 에러이며, 소나큐브에서는 Elasticsearch을 사용하고 있다.

max_map_count

프로세스가 사용할 수 있는 메모리 맵 영역의 최대 수를 지정합니다. 대부분의 경우 기본값으로 65530이 적절합니다. 애플리케이션에 이 파일보다 많은 수를 매핑해야 하는 경우 이 값을 늘립니다.

5.4. 용량 튜닝 Red Hat Enterprise Linux 6 | Red Hat Customer Portal

The Red Hat Customer Portal delivers the knowledge, expertise, and guidance available through your Red Hat subscription.

access.redhat.com

이제 해당 vm.max_map_count에 설정된 값 변경을 통해서 현재 Error를 해결해보도록 하자.

728x90

2. 해결 하기

2.1 시스템 vm.max_map_count 설정 값 확인

  • $ sysctl -a | grep vm.max_map_count
# vm.max_map_count 설정값 확인
$ sysctl -a | grep vm.max_map_count
vm.max_map_count = 65536

2.1 시스템 vm.max_map_count 설정 값 확인
2.1 시스템 vm.max_map_count 설정 값 확인

2.2 시스템 vm.max_map_count 설정 값 변경

  • $ sysctl -w vm.max_map_count=262144
# vm.max_map_count 설정값 변경
$ sysctl -w vm.max_map_count=262144
vm.max_map_count = 262144

# vm.max_map_count 설정값 확인
$ sysctl -a | grep vm.max_map_count
vm.max_map_count = 262144

2.2 시스템 vm.max_map_count 설정 값 변경
2.2 시스템 vm.max_map_count 설정 값 변경

728x90

3. 소나큐브 구동

이제 다시 한번 console 옵션으로 구동을 해보도록 하자.

  • $ ./sonar.sh console
# 소나큐브 Console 옵션으로 실행

$ ./sonar.sh console
Running SonarQube...
wrapper  | --> Wrapper Started as Console
wrapper  | Launching a JVM...
jvm 1    | Wrapper (Version 3.2.3) http://wrapper.tanukisoftware.org
jvm 1    |   Copyright 1999-2006 Tanuki Software, Inc.  All Rights Reserved.
jvm 1    |
jvm 1    | 2022.03.19 11:41:42 INFO  app[][o.s.a.SchedulerImpl] Process[es] is up
jvm 1    | 2022.03.19 11:41:42 INFO  app[][o.s.a.ProcessLauncherImpl] Launch process[[key='web', ipcIndex=2, logFilenamePrefix=web]] from [/data/programs/sonarqube-9.3.0.51899]: /data/programs/jdk-11.0.14.1+1/bin/java -Djava.awt.headless=true -Dfile.encoding=UTF-8 -Djava.io.tmpdir=/data/programs/sonarqube-9.3.0.51899/temp -XX:-OmitStackTraceInFastThrow --add-opens=java.base/java.util=ALL-UNNAMED --add-opens=java.base/java.lang=ALL-UNNAMED --add-opens=java.base/java.io=ALL-UNNAMED --add-opens=java.rmi/sun.rmi.transport=ALL-UNNAMED --add-exports=java.base/jdk.internal.ref=ALL-UNNAMED --add-opens=java.base/java.nio=ALL-UNNAMED --add-opens=java.base/sun.nio.ch=ALL-UNNAMED --add-opens=java.management/sun.management=ALL-UNNAMED --add-opens=jdk.management/com.sun.management.internal=ALL-UNNAMED -Dcom.redhat.fips=false -Xmx4096m -Xms2048m -XX:+HeapDumpOnOutOfMemoryError -Dhttp.nonProxyHosts=localhost|127.*|[::1] -cp ./lib/sonar-application-9.3.0.51899.jar:/data/programs/sonarqube-9.3.0.51899/lib/jdbc/postgresql/postgresql-42.3.1.jar org.sonar.server.app.WebServer /data/programs/sonarqube-9.3.0.51899/temp/sq-process945241133650902770properties
jvm 1    | 2022.03.19 11:41:51 INFO  app[][o.s.a.SchedulerImpl] Process[web] is up
jvm 1    | 2022.03.19 11:41:51 INFO  app[][o.s.a.ProcessLauncherImpl] Launch process[[key='ce', ipcIndex=3, logFilenamePrefix=ce]] from [/data/programs/sonarqube-9.3.0.51899]: /data/programs/jdk-11.0.14.1+1/bin/java -Djava.awt.headless=true -Dfile.encoding=UTF-8 -Djava.io.tmpdir=/data/programs/sonarqube-9.3.0.51899/temp -XX:-OmitStackTraceInFastThrow --add-opens=java.base/java.util=ALL-UNNAMED --add-exports=java.base/jdk.internal.ref=ALL-UNNAMED --add-opens=java.base/java.lang=ALL-UNNAMED --add-opens=java.base/java.nio=ALL-UNNAMED --add-opens=java.base/sun.nio.ch=ALL-UNNAMED --add-opens=java.management/sun.management=ALL-UNNAMED --add-opens=jdk.management/com.sun.management.internal=ALL-UNNAMED -Dcom.redhat.fips=false -Xmx512m -Xms128m -XX:+HeapDumpOnOutOfMemoryError -Dhttp.nonProxyHosts=localhost|127.*|[::1] -cp ./lib/sonar-application-9.3.0.51899.jar:/data/programs/sonarqube-9.3.0.51899/lib/jdbc/postgresql/postgresql-42.3.1.jar org.sonar.ce.app.CeServer /data/programs/sonarqube-9.3.0.51899/temp/sq-process14245104795152016721properties
jvm 1    | 2022.03.19 11:41:53 INFO  app[][o.s.a.SchedulerImpl] Process[ce] is up
jvm 1    | 2022.03.19 11:41:53 INFO  app[][o.s.a.SchedulerImpl] SonarQube is up

3. 소나큐브 구동
3. 소나큐브 구동

이제 정상적으로 구동되는 것을 확인할 수 있다.

console 옵션으로 실행했기 때문에 해당 프로세스가 종료되면 바로 서비스도 종료되니 종료 후 start를 통해서 다시 정상적으로 구동시켜주도록 하자.

  • $ Control + C(^C)
# 소나큐브 Console 옵션 종료(Control + C)

^Cwrapper  | INT trapped.  Shutting down.
jvm 1    | 2022.03.19 11:45:15 WARN  app[][o.s.a.p.AbstractManagedProcess] Process exited with exit value [ce]: 130
jvm 1    | 2022.03.19 11:45:15 INFO  app[][o.s.a.SchedulerImpl] Process[ce] is stopped
jvm 1    | 2022.03.19 11:45:15 WARN  app[][o.s.a.p.AbstractManagedProcess] Process exited with exit value [es]: 130
jvm 1    | 2022.03.19 11:45:15 INFO  app[][o.s.a.SchedulerImpl] Process[es] is stopped
jvm 1    | 2022.03.19 11:45:15 WARN  app[][o.s.a.p.AbstractManagedProcess] Process exited with exit value [web]: 130
jvm 1    | 2022.03.19 11:45:15 INFO  app[][o.s.a.SchedulerImpl] Process[web] is stopped
jvm 1    | 2022.03.19 11:45:15 INFO  app[][o.s.a.SchedulerImpl] SonarQube is stopped
wrapper  | <-- Wrapper Stopped

3. 소나큐브 구동
3. 소나큐브 구동

  • $ ./sonar.sh start
# 소나큐브 정상구동 및 구동 확인

$ ./sonar.sh start
Starting SonarQube...
Started SonarQube.

$ ps -ef | grep sonar
happylie    8151       1  0 11:48 ?        00:00:00 /data/programs/sonarqube-9.3.0.51899/bin/linux-x86-64/./wrapper /data/programs/sonarqube-9.3.0.51899/bin/linux-x86-64/../../conf/wrapper.conf wrapper.syslog.ident=SonarQube wrapper.pidfile=/data/programs/sonarqube-9.3.0.51899/bin/linux-x86-64/./SonarQube.pid wrapper.daemonize=TRUE
happylie    8153    8151 62 11:48 ?        00:00:02 /usr/lib/java/bin/java -Dsonar.wrapped=true -Djava.awt.headless=true --add-exports=java.base/jdk.internal.ref=ALL-UNNAMED --add-opens=java.base/java.lang=ALL-UNNAMED --add-opens=java.base/java.nio=ALL-UNNAMED --add-opens=java.base/sun.nio.ch=ALL-UNNAMED --add-opens=java.management/sun.management=ALL-UNNAMED --add-opens=jdk.management/com.sun.management.internal=ALL-UNNAMED -Xms8m -Xmx32m -Djava.library.path=./lib -classpath ../../lib/sonar-application-9.3.0.51899.jar:../../lib/jsw/wrapper-3.2.3.jar:../../lib/sonar-shutdowner-9.3.0.51899.jar -Dwrapper.key=hociIvroYBSXLeNW -Dwrapper.port=32000 -Dwrapper.jvm.port.min=31000 -Dwrapper.jvm.port.max=31999 -Dwrapper.pid=8151 -Dwrapper.version=3.2.3 -Dwrapper.native_library=wrapper -Dwrapper.service=TRUE -Dwrapper.cpu.timeout=10 -Dwrapper.jvmid=1 org.tanukisoftware.wrapper.WrapperSimpleApp org.sonar.application.App
happylie    8217    8153 99 11:48 ?        00:00:09 /data/programs/jdk-11.0.14.1+1/bin/java -XX:+UseG1GC -Djava.io.tmpdir=/data/programs/sonarqube-9.3.0.51899/temp -XX:ErrorFile=../logs/es_hs_err_pid%p.log -Des.networkaddress.cache.ttl=60 -Des.networkaddress.cache.negative.ttl=10 -XX:+AlwaysPreTouch -Xss1m -Djava.awt.headless=true -Dfile.encoding=UTF-8 -Djna.nosys=true -Djna.tmpdir=/data/programs/sonarqube-9.3.0.51899/temp -XX:-OmitStackTraceInFastThrow -Dio.netty.noUnsafe=true -Dio.netty.noKeySetOptimization=true -Dio.netty.recycler.maxCapacityPerThread=0 -Dio.netty.allocator.numDirectArenas=0 -Dlog4j.shutdownHookEnabled=false -Dlog4j2.disable.jmx=true -Dlog4j2.formatMsgNoLookups=true -Djava.locale.providers=COMPAT -Dcom.redhat.fips=false -Des.enforce.bootstrap.checks=true -Xmx512m -Xms512m -XX:MaxDirectMemorySize=256m -XX:+HeapDumpOnOutOfMemoryError -Des.path.home=/data/programs/sonarqube-9.3.0.51899/elasticsearch -Des.path.conf=/data/programs/sonarqube-9.3.0.51899/temp/conf/es -Des.distribution.flavor=default -Des.distribution.type=tar -Des.bundled_jdk=false -cp /data/programs/sonarqube-9.3.0.51899/elasticsearch/lib/* org.elasticsearch.bootstrap.Elasticsearch

728x90
728x90


🌵댓글

 

loading