Skip to content

jvm 구동시 옵션

kimtaehun edited this page Dec 22, 2022 · 5 revisions

배경

기존에는 ide를 통해 어플리케이션을 실행하고 부하 테스트를 진행했다.

pinpoint agent를 어플리케이션에 붙혀야하는 문제가 있어, 직접 터미널에서 jar파일로 실행하는 방식으로 진행했다.

jar로 어플리케이션을 실행하고 부하 테스트를 진행하니 tps가 3배까지 증가해서 jvm 실행시 옵션이 뭐가 다른건지 확인을 위해 조사했다.

조사 내용

-Dfile.encoding=UTF-8: 인코딩 설정, 따로 하지않으면 system default jvm 인코딩 설정

-XX:TieredStopAtLevel=1: 이게 tps에 영향을 주었다. 클라이언트 옵션으로 컴파일, tiered compildation in jvm

4가지 단계가 있는데 각각 아래와 같다.(1,2,3은 c1 compiler), jit compiler

  1. 인터프리터만 수행
  2. 부분 컴파일
  3. 전체 컴파일
  4. c2 compiler 사용, 애는 어떤 코드가 얼마나 자주 실행하는지를 기억해서 자주 실행되는 코드는 캐싱

(관련 토스 slash22 영상)

-noverify: 클래스 로딩시 validation 수행을 하지 않는 옵션, 클래스 validation은 원래 엄청 느린 작업이라 클래스 로더가 트리구조를 갖게 된 이유기도 하죠.

Dspring.output.ansi.enabled=always: 아래처럼 콘솔 출력에 색칠해줌

-Dcom.sun.management.jmxremote -Dspring.jmx.enabled=true: jmx라는 기능을 사용할 수 있게 하는 옵션이라고 합니다.

이를 통해 jconsole을 통해 다양한 조사를 할 수 있는 것 같습니다. 링크

Dspring.liveBeansView.mbeanDomain: liverBeanView 옵션

Clone this wiki locally