반응형
sonarqube(소나큐브)를 연동하여 띄우려 하던 도중 아래 에러가 발생했다.
2022.08.12 10:05:27 INFO app[][o.s.a.AppFileSystem] Cleaning or creating temp directory /app/sonarqube/sonarqube-7.6/temp
2022.08.12 10:05:27 INFO app[][o.s.a.es.EsSettings] Elasticsearch listening on /127.0.0.1:9001
2022.08.12 10:05:27 INFO app[][o.s.a.p.ProcessLauncherImpl] Launch process[[key='es', ipcIndex=1, logFilenamePrefix=es]] from [/app/sonarqube/sonarqube-7.6/elasticsearch]: /app/sonarqube/sonarqube-7.6/elasticsearch/bin/elasticsearch -Epath.conf=/app/sonarqube/sonarqube-7.6/temp/conf/es
2022.08.12 10:05:27 INFO app[][o.s.a.SchedulerImpl] Waiting for Elasticsearch to be up and running
OpenJDK 64-Bit Server VM warning: Option UseConcMarkSweepGC was deprecated in version 9.0 and will likely be removed in a future release.
2022.08.12 10:05:27 INFO app[][o.e.p.PluginsService] no modules loaded
2022.08.12 10:05:27 INFO app[][o.e.p.PluginsService] loaded plugin [org.elasticsearch.transport.Netty4Plugin]
WARNING: An illegal reflective access operation has occurred
WARNING: Illegal reflective access by io.netty.util.internal.ReflectionUtil (file:/app/sonarqube/sonarqube-7.6/lib/common/netty-common-4.1.13.Final.jar) to constructor java.nio.DirectByteBuffer(long,int)
WARNING: Please consider reporting this to the maintainers of io.netty.util.internal.ReflectionUtil
WARNING: Use --illegal-access=warn to enable warnings of further illegal reflective access operations
WARNING: All illegal access operations will be denied in a future release
2022.08.12 10:05:53 WARN app[][o.s.a.p.AbstractProcessMonitor] Process exited with exit value [es]: 137
2022.08.12 10:05:53 INFO app[][o.s.a.SchedulerImpl] Process [es] is stopped
2022.08.12 10:05:53 INFO app[][o.s.a.SchedulerImpl] SonarQube is stopped
app[][o.s.a.p.AbstractProcessMonitor] Process exited with exit value [es]: 137
소나큐브에서 사용하고 있는 elasticsearch(일라스틱 서치) 프로세스에서 137번 에러를 내뱉고 다운돼버렸다. 해당 에러는 무엇일까?
원인
RAM 메모리 부족이다.
[es]: 137 에러 코드는 RAM 메모리가 부족해서 발생한다고 한다.
나의 경우 sonarqube를 t4g.micro 인스턴스에서 띄우고 있었으며, 소나큐브는 7버전 또는 9버전 기준으로 약 1.5~2GB 정도를 잡아먹는다. 하지만 t4g.micro 인스턴스의 램 용량은 1기가이다.
한 번 확인해보자.
리눅스의 top 명령어로 현재 cpu, 메모리를 프로세스 별로 볼 수 있다.
top 명령어를 입력한 후, shift + p를 누르면 메모리를 많이 차지하는 순서대로 볼 수 있다.
소나큐브를 띄우려 했더니 남은 램 메모리가 30MB 정도로 굉장히 작은 것을 확인할 수 있다.
실제로 소나큐브의 일라스틱서치는 1기가가 훨씬 넘는 램 용량을 차지하고, 위 스샷은 다운되기 직전에 찍은 것이다.
해결방법
아래 포스팅을 참고하여 swap file을 이용해 디스크 용량을 끌고 와 부족한 RAM을 대체할 수 있게 해주었다.
https://kth990303.tistory.com/361
성능 상으로는 좋진 않지만 RAM 메모리가 부족할 때 유용한 방법이다.
참고
- https://stackoverflow.com/questions/34631518/exit-code-137-when-running-sonarqube-analysis-on-jenkins
- https://sundries-in-myidea.tistory.com/102
반응형