ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [NCP, Docker] 왜 내 서버 Disk 사용량이 90퍼?
    📚 개발백과 2024. 5. 30. 01:30
    728x90

    상황:

    NCP console 들어갔다가 디스크 사용량이 90%라는(;) 숫자를 봄

     

    항상 40퍼대를 유지했는데 오늘 오후 3시경부터 증가하더니 발견한 시점인 당일 오후 10시 반에는 90프로를 찍음


    결론부터 말하자면 로그파일 하나가 24G 나 잡아먹고 있었다.

     

    원인 분석하는 방법부터 시작

     

    0. 해당 서버에 접속부터 한다.

     

    1. docker prune (각자 상황에 맞게.. 중요한건 보호하면서 삭제하길)

    $ docker volume prune
    $ docker system prune -a
    등등

     

    난 현재 실행중인 컨테이너 제외하고 모든 데이터를 삭제했는데도 4G 밖에 삭제되지 않았다.

     

    그럼 이 문제는 아니다.

     

     

    2. 도커 디렉토리와 그 직속 하위 디렉토리들의 디스크 사용량을 확인하고, 그 결과를 크기에 따라 내림차순으로 정렬

    $ docker info | grep -i "docker root dir"
    위 명령어를 통해 나온 주소를(나는 /var/lib/docker였다.)
    $ sudo du -h --max-depth=1 /var/lib/docker | sort -rh

     

     

    /var/lib/docker/containers 에서 24G 를 차지하는 것을 확인

     

    /var/lib/docker/containers 로 이동하자

    $ cd /var/lib/docker/containers

     

     

    3. 현재 디렉토리(.) 내의 모든 파일 및 하위 디렉토리(*)의 디스크 사용량을 검사

    $ du -sh ./* | sort -h

     

     

    153b어쩌구 컨테이너가 24G 를 사용하는 걸 확인

     

    해당 컨테이너 디렉토리에 들어가자

    $ cd ./해당컨테이너아이디복붙

     

     

    4. 다시 한번 디스크 사용량을 본다

    $ du -sh ./* | sort -h

    이 컨테이너의 로그 파일이 24G 를 차지하고 있던 것..;

     

    여기서 잠깐,

    로그 옵션을 설정하지 않으면 이렇게 host directory 에 크기 제한 없이 계속 쌓이게 된다.

    참고:

    https://velog.io/@xolgit/나만-몰랐던-Docker-logs

    https://ingnoh.tistory.com/50

     

    --log-driver local 로 컨테이너 내부 파일에 로테이션으로 로그가 찍히게 변경한다.

     

    5. 문제의 컨테이너에 로그 옵션 주기

    내 문제의 컨테이너는 실행중인 컨테이너이다.

    옵션은 동적으로 줄 수 없으므로 docker stop -> rm 후, 다시 띄울때 옵션을 주어야한다.

    // docker-compose.yml 로 설정하기
    version: "3.7"
    services:
      ...:
        ...
        logging:
          options:
            max-size: "10m" // 한 로그 파일의 최대 용량
            max-file: "5" // 로그 파일의 최대 개수
            
    // cli 로 설정하기
    docker run 어쩌구 --log-opt max-size=10m --log-opt max-file=5 저쩌구

     

    6. 문제의 로그 파일 삭제하기

    docker rm 할때 삭제된다.

     


     

    디스크 전체 사용량이 줄었다.

     

    조금만 늦었으면 많이 귀찮아졌을뻔;

     


    원인 추측, Disk Write 분석

     

    Disk Used 그래프와 마찬가지로 약 3시경부터 쓰기가 폭발적으로 늘어났다.

    최고로 많이 쓰인건 8000KB 이상, 한번 폭발할때마다 평균 7500KB 고도의 산이 생긴다..

    평소엔 Disk Write 는 60KB 정도였다.

     

    로그 분석 툴이 갖춰져있지 않는 상태라 일단은 ssh shell 에 최대한 출력해봤는데 0.0001 초 단위로 로그가 찍혀서 분석이 어려울 뿐더러 전부 INFO 로그 였다.

     

    인증 서비스에서 이런 일이 일어난 건데, 인증 서비스의 api 는 구글,카카오 로그인/로그아웃/reissue 이 세 API 뿐이다.

    또한 아직 테스트 사용자도 없었고, 개발자 4명만이 웹앱 주소를 알고 있었다.

     

    Disk Write 가 가장 빈번했을 때 쓰기 횟수

     

    느낌상 프런트 단에서 무한 요청을 보내는 것 같은데... 

    확인부탁한다고 얘기는 해두고 위에 작성한대로 로그는 로테이션 돌도록 변경한 후

    다음 날 보니까 이전처럼 평균 50KB write 로 돌아와있었다.

    728x90
Designed by Tistory.