-
Notifications
You must be signed in to change notification settings - Fork 0
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
"GC" 끝난 줄 알았지? #28
Comments
시작하며세상에 벌써 책 한 권이 끝났다! 이번 이슈에서는 참고자료인 하나의 메모리 누수를 잡기까지 를 함께 살펴보며 주요 개념들을 다시 한 번 살펴볼 수 있도록 노력해보자! 에러 발생의 시작
모니터링 개선 #20그럼 이제 문제가 해결됐는가? (아니다) 그렇다면 우리가 어떤 부분을 놓치고 있었는지 제대로 확인해보기 위해서는 모니터링 개선이 필요하다. 모니터링 개선에 대해서는 지난 이슈들에서 다뤘던 로그와 모니터링 도구에 대해서 생각해보고자 한다.
문제 원인 파악그럼 이제 앞의 단계를 통해서 예외 처리나 서비스에서 제외된 장비나 쓰레드 등의 로그를 분석할 수 있다.
→ 하지만 이러한 방식은 서비스 중인 서버의 히스토그램을 확보해야 하는데, 서비스 중인 서버에서 받지 못했고, 숫자로는 접근이 어려울 수 있어 분석이 어려울 수 있다. jhat을 이용한다면 다음과 같이 class meta 정보와 생성된 객체 정보를 확인할 수 있다.
하지만 jhat의 경우 힙 덤프 파일이 크다면 분석이 어려울 수 있다는 단점이 있다.(아예 응답이 없을 수도 있음) (참고: https://soft.plusblog.co.kr/51) 이외에도 VisualVM을 통한 heap dump 분석에서는 프로세스가 진행 중에 Monitoring 에서 Heap Dump 버튼을 클릭하면 실제 Heap Dump 가 생기고 아래 그림과 같이 CPU, Memory, Classes, Thread를 확인할 수 있으며 Visual GC 플러그인을 통해 GC에 대한 현황을 볼 수 있다. 출처: https://liltdevs.tistory.com/167 각 클래스 별 정보도 확인할 수 있으며 비정상적으로 메모리를 많이 차지하고 있는 클래스에 대해서 먼저 접근해 원인을 확인해볼 수 있다. 문제 해결위의 과정을 통해서 문제가 발생한 Class 를 찾을 수 있었다. 지금부터는 내부 구현에서 어떤 부분에 문제가 있는지를 찾아야 한다.
이러한 문제 해결의 과정은 경험에 의해 학습하는 부분이 크다. 따라서 많은 사례를 접하고 적용해볼 수 있는 능력이 필요하다. 마무리이렇게 서비스에서 에러발생의 시작에서부터 해결까지 일련의 과정을 살펴보았다. 물론 성능테스트나 부하 테스트를 통해서 이러한 에러 발생을 미연에 방지할 수 있다면 좋겠지만(#21) 언제나 클라이언트는 개발자의 생각을 벗어날 수 있다. 그리고 그런 상황에서 성능 개선 및 트러블 슈팅에 대해서 지금까지의 학습 내용이 도움이 될 수 있으면 좋겠다! |
👍 문제
24장은 우리가 지나온 모든 발자취를 다시 걸어오는 경험을 할 수 있는 챕터였다. 이번 주제도 우리가 배웠던 지식을 다시 한번 점검하는 취지를 가지기 위해 가져왔다. 자 다시 한번 거인의 어깨 위에 올라서보자.
하나의 메모리 누수를 잡기까지
위 URL은 네이버 기술팀이 메모리 릭을 잡는 모든 트러블슈팅 과정을 서술하고 있다.
이 내용을 1
24장의 내용과 함께 정리해보자너무 어려운 건 건너뛰고 책을 보고 배울 수 있었던 사실 내에서 재정리하는 식으로 하자. 새로운 기술 스택에 대한 구체적인 설명은 생략하자.장장 6주의 과정의 마무리이다. 이 모든 걸 정리할 필요가 있다 생각했다.
📺 관련 챕터 및 레퍼런스
1~24장 총정리!
🐳 비고
일타강사 조다민과 함께하는 JPTS 하루 완성
The text was updated successfully, but these errors were encountered: