Java Process Memory

Table of Contents

SonarQube 어플리케이션 서버는 3개의 메인 자바 프로세스로 구성됩니다:

  • Web (내장된 웹 서버 포함)
  • ElasticSearch
  • Compute Engine

각 자바 프로세스는 고유의 메모리 설정값을 가지고 있으며, 이 값은 sonar.properties 파일을 통해 설정할 수 있습니다. 기본 설정값을 사용해도 일반적인 상황에서는 큰 무리가 없습니다. 대규모의 SonarQube 인스턴스(100 사용자 이상 혹은 5,000,000 라인의 코드 등)를 사용하고자 하거나, 지속적인 통합 파이프라인의 일부로 활용하려는 경우에는 이 인스턴스들의 메모리 및 CPU 사용율, 디스크 사용량을 반드시 모니터링해야 합니다. 모니터링을 통해 어떤 프로세스들의 자원이 부족한지, 자원 부족 상황이 오기 전에 어떤 일을 해야할지 알 수 있습니다. 오픈 소스 및 상용 모니터링 도구들을 함께 사용할 수 있습니다. SonarSource는 특정 도구들을 추천하거나 권장하지는 않습니다.

메모리 설정

다음 상황이 발생하는 경우, 메모리 증가가 필요할 수 있습니다:

  • 모니터링 도구가 하나 혹은 그 이상의 SonarQube 프로세스가 메모리 한계에 이르렀음을 보고 하는 경우
  • 하나 혹은 그이상의 SonarQube 프로세스가 ouf-of-memory 현상으로 중단된 내용이 sonar.log 파일에 기록된 경우
  • SonarQube의 백그라운드 태스크가 out-of-memory 현상으로 실패한 내용이 백그라운드 태스크 로그에 기록된 경우
  • 엘라스틱서치 인스턴스(시스템 정보에서 확인 가능)의 Issues 인덱스 사이즈가 엘라스틱서치 자바 프로세스에 할당된 메모리 이상인 경우

각 자바 프로세스의 -Xmx 메모리 설정값을 변경해서 해당 프로세스에 할당된 최대 메모리 값을 지정할 수 있습니다. 해당 속성은 sonar.properties 파일에 입력합니다:

  • Web: sonar.web.javaOpts
  • ElasticSearch: sonar.search.javaOpts
  • Compute Engine: sonar.ce.javaOpts

-Xmx 속성값으로는 메가바이트(e.g. -Xmx2048m) 혹은 기가바이트(e.g. -Xmx2G)를 사용할 수 있습니다.

JMX Beans 및 ElasticSearch 모니터링 옵션과 관련된 자세한 내용은 모니터링 페이지를 참조합니다.


© 2017-2018 Moses Kim.

별도의 언급이 없는 한, 이 스페이스의 컨텐츠는 크리에이티브 커먼즈 저작자표시-비영리-동일조건변경허락 4.0 국제 라이선스에 따라 이용할 수 있습니다.
SONARQUBE는 SonarSource SA의 트레이드 마크입니다. 모든 트레이트 마크 및 저작권은 각 소유자의 소유물입니다.

::: SonarQube 관련 문의 : 이메일 :::