반응형
자바 프로세서가 사용하는 메모리 환경을 확인하는 방법을 정리한다.
> 작성일 : 2025-02-24
> EC2 : t3.medium (CPU : 2core / RAM : 4GB)
> OS : Amazon Linux 2 AMI (HVM)
<1> 문제상황
Spring Boot 기반 API + Vue 기반 Web 환경의 서버가 버벅이다 멈추는 현상이 발생했다.
<2> 문제확인
콘솔에 접속해 다음 명령으로 메모리 설정값을 확인한다.
# 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에서 사용중인 메모리
<3> 문제해결
API용도로만 활용하는 서버이지만 Java 프로세스에 할당된 메모리가 너무 작다 힙메모리를 더크게 할당한다.
힙사이즈를 늘리는 과정에서 GC가 자주 발생하지 않도록 초기 힙사이즈와 최대 힙사이즈를 동일하게 한다.
# Xms : 초기 힙메모리
# Xmx : 최대 힙메모리
> java -Xms2048m -Xmx2048m -jar api-server.jar
반응형
'Tip' 카테고리의 다른 글
[Tip | NodeJS] Npm 의존성 문제로 인한 서버 실행 에러 (0) | 2025.02.27 |
---|---|
[Tip | NodeJS] 여러개의 노드 버전적용을 위한 NVM 설치 및 사용 (0) | 2025.02.26 |
[Tip | MySQL] DBeaver - Driver file download failed (0) | 2025.02.17 |
[Tip | Git] detected dubious ownership in repository (0) | 2025.01.22 |
[Tip | MySQL] MySQL Deadlock found when trying to get lock (0) | 2025.01.14 |