본문 바로가기
츄Log/끄적끄적

프로파일러 사용해보기

by 츄츄🦭 2024. 7. 1.
728x90

빨간색 : 프로파일링 할 패키지를 기재한다. 그리고 CPU를 눌러 프로파일링을 진행한다. 

example 패키지 하위의 컨트롤러가 엔드포인트이고, 내부적으로 openFeign을 사용하고 있다. 

그러므로 전체 계층구조를 모두 필터 클래스로 등록하였다.

 

실행스택 중 5s가 걸리는 곳을 보았더니, feignClient에서 convertResponse를 하는 곳이다.

앱 속도가 느려진 근원을 발견한 것이다.  

 

오늘날 많은 자바 프레임워크에서 디펜던시는 다이나믹 프록시를 통해 구현체를 디컾플링하기에 실제 코드는 볼 수 없다.

(다이나믹 프록시 : 런타임에 메서드 구현체를 갈아 끼울 수 있는 수단)

 

JDBC 버튼으로,

SQL 쿼리도 프로파일링이 가능하다.

 

자바 앱은 JDBC드라이버를 통해 SQL쿼리를 DB에 보내기 때문에, 드라이버가 쿼리를 DB에 보내기 전에 드라이버를 가로채서 쿼리를 복사한다.

 

하이버네이트의 강점은 쿼리를 투명하게(transparently) 생성하고 작업을 최소화하지만 쿼리 생성이 너무 투명해서 앱에 에러가 발생하기 쉽다.

이런 문제를 조기에 발견하기 위해 쿼리 파일링을 개발 프로세스의 일부분으로 습관화 하자.

프로파일링은 이슈 찾기(finding issue)보다 감사(auditing)에 더 가깝다.

 

728x90