🪓삽질노트

[JAVA] java.lang.OutOfMemoryError : Java heap space (5) 임시방편 - 크론탭을 이용한 서버 재시작 자동화

디카페인라떼 2022. 10. 27. 19:41

최종 프로젝트를 진행하면서 인프라를 담당하게 되었는데 그 중 마주친 OOM 에러.(22.10.13 THU) 

끝끝내 원인을 찾지는 못하였지만 어떻게 문제를 분석하고 임시방편이지만 어떻게 처리하였는지 기록해 보고자 한다. 

2022.10.26 - [🪓삽질노트] - [JAVA] java.lang.OutOfMemoryError : Java heap space (1) 문제 정의 & 사실 수집 & 원인 추론

2022.10.26 - [🪓삽질노트] - [JAVA] java.lang.OutOfMemoryError : Java heap space (2) 조사 방법 구현 & 결과 관찰

2022.10.26 - [🪓삽질노트] - [JAVA] java.lang.OutOfMemoryError : Java heap space (3) Heap Dump 분석 - MAT

2022.10.27 - [🪓삽질노트] - [JAVA]java.lang.OutOfMemoryError : Java heap space (4) Scouter를 통한 모니터링


    • 어딘가 코드 상의 문제인 것 같은데 그걸 찾아내기엔 아직 내공이 부족한 것 같다...
    • 하지만 서버를 계속 쳐다보면서 뻗을 때마다 재시작해줄수는 없는 노릇이므로 크론탭을 이용해서 서버 재시작 자동화를 해주었다.

    크론탭

    • 리눅스 작업 스케줄러
    • 등록형식
    * * * * *  수행할 명령어
    ┬ ┬ ┬ ┬ ┬
    │ │ │ │ │
    │ │ │ │ │
    │ │ │ │ └───────── 요일 (0 - 6) (0:일요일, 1:월요일, 2:화요일, …, 6:토요일)
    │ │ │ └───────── 월 (1 - 12)
    │ │ └───────── 일 (1 - 31)
    │ └───────── 시 (0 - 23)
    └───────── 분 (0 - 59)

     

    • 현재 작업 목록 확인
    crontab -l
    • 크론탭 작업 수동 등록
    crontab -e
    • 크론탭 삭제 
    crontab -r

     


    • 매 작업마다 수행해줄 스크립트를 짠 뒤

    • 크론탭 수동 등록을 해준다.
    */5 * * * * sudo sh /home/ubuntu/restart.sh >> /home/ubuntu/logs/restart.log

    -> 로그에도 따로 찍히도록 하였다.

     

     

     

    5분마다 용량을 확인한 뒤 65% 이상이면 자동으로 재시작을 하도록 하였다.


    느낀점

     

    • 사실은 굉장히 .. 아직까지도 찝찝하다 . 원인이 무엇일까? 모두다 해체하고 해결하고 싶다. 
      그러나 일주일이 넘는 시간동안 이 문제에만 골몰하다보니 말그대로 매몰되어가고 있었다.
      이 프로젝트가 내 전부가 아니다. 이 에러가 내 추후의 취직을 좌지우지하지 않는다.
      기초 지식과 경험이 부족한 나에게 계속 들여다본다고해서 되는 건 능사가 아니다.
      선택과 집중이 필요한 때이다. 나는 이미 이 문제에 너무 오래 빠져들었다. 이제 벗어나서 나를 좀더 단련하고 다시 마주해도 늦지 않으리라. 
    • 그래도 처음으로 서버 인프라를 맡으면서 aws에 관해서 여러가지를 찾아보고 해낼 수 있었다. 특히 Linux 명령어에 좀더 익숙해졌다. 로그를 찾아보고 어떻게 대처해야할지 감을 잡기 시작했다. 
      어? 안되네? 하고 우왕좌왕하던 과거와는 달리 (조금) 침착해질수 있었다.
    • 좀더 성장해서 다시 봐줄게 , 그때는 정말 제대로 해결할게  

     

     


    참고블로그