Infra/CI | CD

[Sonarqube][Error] Process exited with exit value [es]: 137 해결

kth990303 2022. 8. 19. 13:12
반응형

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를 누르면 메모리를 많이 차지하는 순서대로 볼 수 있다.

top 명령어로 프로세스 별 cpu, 메모리 사용량을 확인할 수 있다

소나큐브를 띄우려 했더니 남은 램 메모리가 30MB 정도로 굉장히 작은 것을 확인할 수 있다.

실제로 소나큐브의 일라스틱서치는 1기가가 훨씬 넘는 램 용량을 차지하고, 위 스샷은 다운되기 직전에 찍은 것이다.

 

해결방법

아래 포스팅을 참고하여 swap file을 이용해 디스크 용량을 끌고 와 부족한 RAM을 대체할 수 있게 해주었다.

https://kth990303.tistory.com/361

 

[AWS] Swap File을 이용해 EC2 메모리 부족 현상을 해결해보자

작업을 하던 중 aws ec2 메모리 부족현상이 발생했다. 우리가 사용하고 있는 t4g.micro 인스턴스 유형은 램이 1GB였고, 이는 메모리 부족현상을 충분히(?) 볼 수 있을 정도로 작은 양의 메모리였다. 이

kth990303.tistory.com

성능 상으로는 좋진 않지만 RAM 메모리가 부족할 때 유용한 방법이다.


참고

 

반응형