JMX와 VisualVM으로 remote 환경에 있는 앱 성능 분석
목표 stage 환경에서 Spring 애플리케이션이 컨테이너로 실행되고 있다. 해당 애플리케이션의 특정 API의 응답 속도가 늦어져서 원인을 파악한다. JMX JMX: JVM 애플리케이션을 관리하고 모니터링하기 위해 제공되는 API JMX 아키텍처 JMX는 3개의 계층으로 구성되어 있다. Instrumentation layer: 애플리케이션에서 관리하고자 하는 자원을 표현하는 MBean 객체를 관리 JVM에서 기본적으로 제공하는 MBean들이 있음 ThreadMXBean: 스레드 수, 스레드별 CPU 시간, 스레드들의 stack trace 정보 등을 제공 MemoryMXBean: 메모리 사용량 제공 JMX agent layer: MBeanServer 존재 MBean 객체들을 등록, 괸리하고 이를 접근할 수 있도록 인터페이스 제공 Remote management layer: JConsole, VisualVM 같은 툴을 가리키는 클라이언트 영역 VisualVM JVM 애플리케이션을 모니터링 하기 위한 툴 jstatd, JMX 등의 방식으로 JVM 애플리케이션과 통신해서 여러 메트릭 정보 확인 가능 Remote 환경의 컨테이너를 VisualVM으로 모니터링 하기 VisualVM을 JVM 애플리케이션과 JMX 연결하여 모니터링 할 수 있다....