EC2 인스턴스에서 Spring Boot .jar
파일을 실행하던 중 다음과 같은 오류가 발생했다.
OpenJDK 64-Bit Server VM warning: Insufficient space for shared memory file:
367920
Try using the -Djava.io.tmpdir= option to select an alternate temp location.
디스크 상태를 확인하자, 루트 디렉토리(/
)가 완전히 가득 찬 상태였다.
ubuntu@ip-172-31-36-253:~$ df -h
Filesystem Size Used Avail Use% Mounted on
/dev/root 6.8G 6.7G 0 100% /
디스크 용량 부족으로 인해 JVM이 임시 디렉토리에 접근하지 못해 .jar
실행에 실패한 문제
EC2 인스턴스의 EBS 루트 볼륨 크기를 늘리는 방법이다.
예: 8GB → 30GB (30GB까지 프리티어 내에서 무료)
절차:
1. EC2 대시보드 → 인스턴스 → 루트 볼륨(EBS) 클릭
2. “작업” > “볼륨 수정” > 새 크기 입력 (ex. 30)
3. 인스턴스에 접속하여 아래 명령 실행
sudo growpart /dev/xvda 1
sudo resize2fs /dev/xvda1
불필요한 로그/캐시로 디스크가 가득 찼다면 주기적으로 아래 명령어 실행
일정 주기마다 자동으로 로그를 정리하는 방법이 뒤에서 나온다.
sudo journalctl --vacuum-time=2d
sudo rm -rf /tmp/*
sudo apt-get clean
Amazon S3 또는 EFS 등을 활용해 로그/파일 업로드 경로를 외부화하면
루트 디스크 부담을 줄일 수 있다.
디스크 용량 확장 후 상태:
ubuntu@ip-172-31-36-253:~$ df -h
Filesystem Size Used Avail Use% Mounted on
/dev/root 29G 6.5G 22G 23% /
/dev/root
용량이 29GB로 확장됨디스크를 한 번 늘려도 시간이 지나면 다시 공간 부족이 발생할 수 있다.
따라서 시스템 로그가 자동으로 정리되도록 설정하는 것이 중요하다.
설정 파일 열기
sudo nano /etc/systemd/journald.conf
다음 설정 수정
[Journal]
SystemMaxUse=100M # 전체 로그 크기를 100MB로 제한
SystemMaxFileSize=50M # 단일 로그 파일 크기 최대 50MB
MaxRetentionSec=2week # 최대 보관 기간 2주
변경 사항 적용
sudo systemctl restart systemd-journald
디스크 용량 부족 문제는 단순히 "jar 파일이 실행되지 않는다"는 현상으로만 나타나지만,
그 원인을 정확히 파악하고 디스크 증설, 로그 정리, 캐시 관리까지 체계적으로 대응해야 한다.
이번 경험을 통해 시스템 리소스를 점검하고 관리하는 능력이 얼마나 중요한지 다시 한 번 느꼈다.