본문 바로가기
혼자 공부하는 것들/Spring

서버가 죽었다!.... 502....(100 % of root file system is in use. 0 MB free.)

by applepick 2023. 5. 6.
반응형

주말 동안 삽질을 오지게 했다...

 

정리할 겸... 작성해 보자...

현재  Amazon Elastic Beanstalk, EC2로 서버를 운영하고 있다. 물론 인스턴스는 t2.micro로 무료버전을 쓰고 있다. 잘 사용하다가 갑자기 배포가 안된다...

Git-Actions로 배포파이프라인을 구축해서 사용하고 있다. 

 

EC2의 볼륨을 8GB로 사용하고 있어서 부족한 걸까?.... 확인해 보자!

100 % of root file system is in use. 0 MB free.

예상이 맞았다. 어떤 파일이 용량을 잡아먹고있는지 확인해 보니 로그 파일이 원인이었다.

 

https://stackoverflow.com/questions/50847838/running-out-of-disk-space-in-amazon-ec2-cant-find-what-i-am-using-my-storage-f

 

Running out of disk space in Amazon EC2, can't find what I am using my storage for

I am Running an AWS ami using a T2.large instance using the US East. I was trying to upload some data and I ran in the terminal: df -h and I got this result: Filesystem Size Used Avail Use%

stackoverflow.com

나와 같은 상황이라 참고했다. 

 

볼륨 크기를 올리면 되지만... 그래도 최대한 무료 인스턴스를 활용해보고 싶었다.

일단 Logback의 설정을 바꿔줬다. 5GB -> 3GB로 용량을 낮췄다.

logback 설정
<appender name="dailyRollingFileAppender" class="ch.qos.logback.core.rolling.RollingFileAppender">
  <file>${LOG_PATH}/production.log</file>
  <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
    <fileNamePattern>${LOG_PATH}/rolling/production.%d{yyyy-MM-dd}.log</fileNamePattern>
    <maxHistory>30</maxHistory>
    <maxFileSize>3GB</maxFileSize>
  </rollingPolicy>

팀원분 중 한 분이 설정해 주셨다. 근데 배포는 정상적으로 되는데 502 Error가 그대로 인 것이다... 이번엔 배포는 정상적으로 되었으니 docker 이미지를 확인해 봤다.

정상적으로 이미지가 잘 올라와있다... 뭐가 문제일까?

 

이번엔 Spring 쪽 Log를 확인해 봤다.

아까 적용했던 maxFileSize 설정이 잘못된 것 같다. 열심히 구글링 결과...

<appender name="dailyRollingFileAppender" class="ch.qos.logback.core.rolling.RollingFileAppender">
  <file>${LOG_PATH}/production.log</file>
  <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
    <fileNamePattern>${LOG_PATH}/rolling/production.%d{yyyy-MM-dd}.log</fileNamePattern>
    <maxHistory>30</maxHistory>
    <totalSizeCap>3GB</totalSizeCap>
  </rollingPolicy>

maxFileSize -> totalSizeCap으로 설정을 바꿔줬다. totalSizeCap은 Logback의 로그 롤링 정책 중 하나로, 일정 크기 이상이 되면 기존 로그 파일을 삭제하고 새로운 로그 파일을 생성한다. 이 속성을 사용하면 로그 파일의 총크기가 일정 크기 이상이 되면 롤링이 트리거 되어 가장 오래된 로그 파일이 삭제된다. 이를 통해 디스크 공간을 절약할 수 있다. 하지만 실제로는 로깅에 대한 정책이 필요하다. 현재는 그냥 서비스를 운영해 보는 것을 경험으로 만들고 있지만... 서비스가 더 커진다면 이 이 부분을 개선해야 한다.

 

정상적으로 배포 후

사용률이 떨어진 것을 확인할 수 있었다. 참어렵구만...

반응형

댓글