상세해 NewRelic 로 성능 개선~그 3

상세해 NewRelic 로 성능 개선~그 2 의 계속입니다.

이번은 Key Transactions의 X-Ray Sessions라는 기능으로 볼 수 있는 Thread Profiler의 소개입니다.



사례 1: 특정 API가 느리지만 소스에서 느린 위치를 확인하고 싶습니다.



그 1 케이스 1 에서 느린 API의 얼른 어디서 시간을 잡고 있는지 알았습니다.

그러나 좀 더 세세하게 소스 코드 단위로 어느 처리로 시간이 걸리고 있는지 보고 싶은 경우도 있다고 생각합니다.
그때 활약하는 것이 Key TransactionsX-Ray Sessions 입니다.

Key Transactions는 특정 API마다 별도의 페이지에서 요청을 추적하여 자세한 로그를 볼 수 있습니다.
특정 요청에 대한 프로파일 러를 표시하는 것이 X-Ray Sessions입니다.

그럼 설정해 봅시다.

이번에는/api/home의 API 경로를 Key Transactions로 추가해 보겠습니다.
아래와 같이 ①=>②=>③의 순서로 클릭합니다. ②에서 걱정되는 API를 클릭하여 추적합니다. 이번 경우라면 home의 API입니다.



/api/home의 Key Transaction을 할 수 있으므로, 마법사에 따라 Key transactions의 페이지로 이동해 보겠습니다.
이 방법으로 특정 API에 대한 요청 전용 정보를 볼 수 있습니다.



Key transaction에 의해 Alert등도 설정할 수 있습니다만, 이번은, X-Ray로 처리의 병목을 조사해 보겠습니다.





이제 X-Ray를 설정할 수 있었습니다. sampling_home이라는 이름으로 최대 1시간 동안 50개의 요청을 추적합니다.
액세스가 있는 서버라면 잠시 머물거나 API 테스트 등을 해당 API에 요청하여 50개의 요청을 받을 때까지 기다립니다.

쌓이면 sampling_home을 열고 X-Ray를 클릭하고 Thread Profile을 열어보십시오.
실행된 순서마다 걸린 시간의 백분율이 나오므로 자세하게, 병목을 볼 수 있습니다. (상당히 모자이크만으로 보기 어렵고 죄송합니다)
다만 주의해야 하는 것은 IO 대기나 컨텍스트 스위치 등으로 CPU가 전환되었을 때 기다리고 있는 대기 시간도 여기에 반영되어 있으므로 참고 정도라는 형태입니다.



덤: 우연히 요청 요청의 원인을 추구



Key Transactions에는 또 다른 편리한 기능이 있어, 트럭 한 요청의 하나 하나의 상세를 응답 시간에 따라 볼 수 있습니다.
이를 사용하면 많은 요청이 빠르지 만 가끔 느린 것이있는 경우를 쉽게 찾을 수 있으며 특정 요청 만 포커스하여 처리 속도가 느려지는 곳을 볼 수 있습니다.

게다가 실행된 SQL도 세세하게 볼 수 있으므로 장해 대응이나 느린 쿼리의 대응에 꽤 도움이 됩니다.



매듭



이것으로, 그 1~3까지 계속된 상세해 NewRelic 로 성능 개선은 끝납니다.
New Relic은 쉽게 다양한 메트릭스를 볼 수 있고 빈 시간을 정말 필요한 서비스 개발에 빠뜨리는 훌륭한 툴이라고 생각하고 있습니다.

좋은 웹페이지 즐겨찾기