f-lab-clone / ticketing-backend

[2023] Ticketing Service - PerformanceTest, Terraform, EKS, Grafana
https://github.com/f-lab-clone/ticketing-infra
5 stars 3 forks source link

JVM Warm Up Test #108

Closed junha-ahn closed 11 months ago

junha-ahn commented 1 year ago

Description

아래 두가지 자료를 참고

테스트 시나리오

  1. Application Pod 실행 후 테스트
  2. 동일 테스트 재시도
  3. 결과 비교

동일한 테스트를 두번 진행하는 것으로, 가장 단순하게 Warm up을 구현했다.

인프라 환경 등은 큰 의미를 가지지 않기에 기재하지 않는다.

junha-ahn commented 11 months ago

[Kakao tech] JVM warm up

JIT Compiler는 머신 코드를 캐시에 저장해서 성능 향상을 이룬다.

image

애플리케이션 시작 단계에서 캐싱이 없기 때문에, 의도적으로 미리 로직을 실행하여 캐싱되도록 하는 Warm up 절차를 도입하자.

image

최대 최적화 임계치까지 메소드를 호출

image

warm up 이전 livenessProbe 400 응답, 이후 200 응답 (autoscale을 진행하지 않기에 해당 작업 X)

junha-ahn commented 11 months ago

배포 후 테스트

JVM

image

Latency

image

점차 개선되는 Latency를 확인 가능하다. (최고점도 다르다)

K6

req_duration p(95) 값이 425 => 220 => 160 으로 점차 개선됨을 확인 가능하다

1차

image

2차

image

3차

image

결론

JVM Warm up을 통해 초기 Latency 지연을 개선 가능성을 가장 단순화된 테스트로 검증하였다

다만 현재 프로젝트에서 JVM Warm up을 진행하지는 않는다.

추가 참고 자료