> 작성일 : 2025-02-24
> EC2 : t3.medium (CPU : 2core / RAM : 4GB)
> OS : Amazon Linux 2 AMI (HVM)
Spring Boot 기반 API + Vue 기반 Web 환경의 서버가 버벅이다 멈추는 현상이 발생했다.
콘솔에 접속해 다음 명령으로 메모리 설정값을 확인한다.
# PID 확인
jps
메모리 설정 기본값을 확인한다. (InitialHeapSize는 메모리의 1/64, MaxHeapSize는 1/4 가 기본으로 설정됨)
# PID 확인
java -XX:+PrintFlagsFinal -version 2>&1 | grep -i -E 'heapsize|metaspacesize|version'
# 1.8 이전버전 (metaspacesize -> permsize)
java -XX:+PrintFlagsFinal -version 2>&1 | grep -i -E 'heapsize|permsize|version'
# For Windows
java -XX:+PrintFlagsFinal -version 2>&1 | findstr /I "heapsize metaspacesize version"
java Processor의 PID로 사용중인 메모리 확인
jhsdb jmap --heap --pid {PID}
서버의 메모리 확인
free -h
서버의 자원현황 확인
top
# VIRT : 프로세스가 사용중인 메모리 (디스크 가상메모리 포함)
# RES : 프로세스가 RAM에서 사용중인 메모리
API용도로만 활용하는 서버이지만 Java 프로세스에 할당된 메모리가 너무 작다 힙메모리를 더크게 할당한다.
힙사이즈를 늘리는 과정에서 GC가 자주 발생하지 않도록 초기 힙사이즈와 최대 힙사이즈를 동일하게 한다.
# Xms : 초기 힙메모리
# Xmx : 최대 힙메모리
> java -Xms2048m -Xmx2048m -jar api-server.jar
Tags : java 메모리 설정, java 멈춤현상, spring boot heap memory, 자바 힙메모리 설정, java xms xmx, 자바 서버 다운, 톰캣 다운, 톰캣 다운 해결