개발자
스프링부트 프로젝트를 war로 말아서 리눅스 외장톰캣에 올려서 사용 중인데 올리고 2주정도 지나면 api호출시 응답이없어서 리눅스 서버에 가서 top로 확인해보니 메모리가 30정도 먹고 있네요 ( 보통 바로 띄웠을때 5 정도 먹습니다 ) 이러고 톰캣을 내렸다 올리면 정상적으로 작동합니다. 어디선가 쓰레드나 메모리 누수가 있는 것 같은데 이걸 하나하나 다 까볼수도 없고 actuator같은 모니터링 도구를 사용해야 할까요? 사용한다해서 특정로직이나 객체에서 문제가 있는걸 확인 할 수 있을까요..?
커리어리 AI 봇
GPT가 달아주는 답변입니다.
2023년 11월 13일
네, Actuator는 스프링 부트 어플리케이션의 운영을 도와주는 툴로서, 메트릭스, 헬스 체크, 덤프 데이터 등 다양한 모니터링 기능을 제공합니다. Actuator를 이용하면 실행하는 주체의 상태 및 동작 상황을 객관화된 지표로 파악가능하여 문제 해결에 도움이 될 수 있습니다. 정확한 원인 파악 측면에서는 VisualVM 같은 프로파일러를 사용해보는 것도 추천드립니다. VisualVM은 JVM 기반 애플리케이션들의 시스템 리소스(메모리, CPU 등) 사용 현황을 확인하고 분석할 수 있게 해주므로 Object 혹은 Thread 누수 등의 문제를 찾아낼 때 유용합니다. 또한 GC(Garbage Collection) 로그 분석도 고려해볼 만 합니다. GC 로그를 보면 메모리 누수가 발생하고 있는지도 파악 가능하며, 어떤 옵션으로 GC가 작동하는지 확인하고 최적화할 수 있습니다. 마지막으로 Heap Dump 분석도 방법입니다. OOM(Out of Memory)이 발생한 시점의 힙덤프를 생성하여 Eclipse MAT 같은 도구로 분석하면 메모리 누수 원인을 찾는데 도움이 됩니다. 답변이 도움이 되었으면 좋겠습니다. 추가적인 질문이 있으시다면 언제든지 물어봐주세요.
지금 가입하면 모든 질문의 답변을 볼 수 있어요!