free -h
스프링 서버가 메모리를 많이 잡아먹긴하지만 상당히 많이 쓰고 있다.
어떤 부분에서 메모리 사용이 많은 건지 확인해보기 위해서
VisualVM을 로컬에 띄운 뒤 원격으로 모니터링 연결을 해보기로 했다.
이를 위해서 우선 AWS에서 8500 인바운드 포트를 열어준다.
jar 파일을 실행할 때
java -Dcom.sun.management.jmxremote.local.only=false \
-Dcom.sun.management.jmxremote.authenticate=false \
-Dcom.sun.management.jmxremote.ssl=false \
-Dcom.sun.management.jmxremote.port=8500 \
-Dcom.sun.management.jmxremote.rmi.port=8500 \
-Djava.rmi.server.hostname=ip주소\ //여기에 http나 hptts/ 같은 프로토콜 붙이지 말고 ip만넣어야 한다.
-jar jar파일
이렇게 실행한 뒤에 visualvm을 켜서
host name에 ip 주소를 입력해주면 된다.
그리고 밑에 뜨는 커넥션을 연결하면서 포트번호만 입력해주면 된다.
sampler른 루른 뒤 memory 샘플링을 해준다.
솔직히 이것만 보고선 뭐가 문젠지 파악하기 어렵다.
heap dump 파일을 만들고서
scp -i key.pem ubuntu@ip주소:/tmp/heapdump-1738245641018.hprof 경로 주소
이렇게 해서 내 로컬로 파일을 가져오기로 했다.
이것만 보고서는 아직 왜 메모리 사용량이 높은지 알기 어렵다. 다음편에 한번 api를 호출해보면서 확인해보자.