카카오 계정 서버의 API 배포 과정 #
Rolling update
Application Ready - Warm Up 사이에 n초 delay를 줄 수 있다.
Compilation Level #
JIT #
위 과정에서 C1, C2는 별도 쓰레드로 동작한다.
C2 컴파일러의 큐가 가득차면, C1의 Level2 로 컴파일한다. 이후 여유가 생기면 Level3, 4 컴파일 처리가 진행된다.
Level2 컴파일이 많이 발생한다면, C2 컴파일러 큐가 가득찼다는 것을 알 수 있겠다. 이때는 C2 컴파일러 쓰레드 수를 조정할 필요가 있겠다.
Code Cache #
초기 캐시 사이즈와 최대 사이즈 조정이 가능하다.
코드 캐시가 가득차면 성능 상 이점을 볼 수 없다. 아래와 같은 메시지가 발생하면 사이즈를 늘려주어야 한다.
카카오 계정 서버에서는 위 메시지는 발생하지 않았다. 기본 값을 그대로 사용했다. (기본 값은 몇인지 확인해보자.)
Compilation Level Threshold #
다음의 지표들을 확인해볼 수 있다.
- InvocationThreshold : 메서드 호출 수
- BackEdgeThreshold : 메서드 내 반복문 수
- CompileThreshold : InvocationThreshold + BackEdgeThreshold (?)
JIT Log #
아래 옵션을 활성화하여 컴파일 로그를 확인할 수 있다.
결론 #
카카오 계정 서버에서는 다음과 같이 지표를 확인했다.
warm up 시간도 고려해야 하기 때문에 결론적으로 250번 진행하는 것을 선택했다. (지연 문제가 발생하지 않는 선에서, 짧은 시간 선택)