자주 일어나는 장애 유형

디스크 풀

  • 로그를 기록하는 프로세스가 에러 또는 멈춘다
  • 임시 파일을 생성해야 하는 명령어의 실행이 안된다
  • 리눅스는 루트 유저만을 위한 예약 블록을 남겨두어 트러블슈팅이 가능하도록 설계

메모리 풀

  • 메모리를 다 쓰고 스왑 영역까지 사용하여 시스템이 느려져 유저에게 응답이 느려짐

시스템 부하

  • 로드 에버리지가 cpu코어 개수보다 높은 경우 유저 요청에 대한 응답이 늦어짐

프로그램의 문제

  • 프로그램의 오동작

확인해야 할 사항

1. 같은 에러가 발생하지 않는가?

오류 발생한 명령 다시 테스트

2. 서버 로드가 높은가?

# cpu 코어수 확인
# cat /proc/cpuinfo
 
$ uptime
09:40:11 up 42 min, 2 users, load average: 0.44, 0.25, 0.19
  1. 09:40:11 현재 시간

  2. up 42 min 인스턴스가 켜진 시간

  3. 2 users 현재 시스템에 로그인 세션

  4. load average: 0.44, 0.25, 0.19 1분 / 5분 / 15분 평균 시스템 부하(load) 의미

    • load average = CPU가 처리 중이거나, CPU를 기다리는 프로세스 수
    • 논리 코어가 16개 라면
      • load 16 = 100%
      • load 8 = 약 50% 부하
      • load 1 = 거의 idle

3. 메모리를 많이 쓰는가?

$ free -m
        total        used        free      shared  buff/cache   available
Mem:    15642        1161       13760          16         943       14480
Swap:    4096           0        4096

Mem행

  1. total 할당된 전체 RAM 용량 (15,642 MB)

  2. used 애플리케이션이 실제로 사용 중인 메모리 (1,162MB)

  3. free 완전히 비어 있는 메모리 (13,760MB) → 아무도 사용하지 않은 RAM.
    → free 자체는 실제 사용 여유를 판단할 때 핵심 지표가 아님.

  4. shared 여러 프로세스가 공유하는 메모리 영역 (16MB) → 대개 매우 작게 나오는 값이 정상.

  5. buff/cache 커널 버퍼 + 페이지 캐시 (943MB) → 파일 접근 속도를 높이기 위한 캐시.
    → 필요해지면 자동으로 해제되기 때문에 “사용량”으로 보면 안 된다.

  6. available 프로세스가 추가로 사용할 수 있는 실질적 여유 메모리 (14,480MB)
    → 이 값이 전체 메모리 상황을 평가할 때 가장 중요해.
    → 14GB 이상 여유면 사실상 완전 여유 상태.

Swap 행

  1. total 스왑 영역 (4GB)

  2. used 현재 사용 중인 스왑 (0MB)

  3. free 남아있는 스왑 (4GB)

4. 디스크를 많이 쓰는가?

$ df -h
Filesystem     Size  Used Avail Use% Mounted on
none           7.7G     0  7.7G   0% /usr/lib/modules/6.6.87.2-microsoft-standard-WSL2
none           7.7G  4.0K  7.7G   1% /mnt/wsl
drivers        466G  119G  347G  26% /usr/lib/wsl/drivers
/dev/sdf       1007G  2.3G  954G   1% /
none           7.7G   80K  7.7G   1% /mnt/wslg
none           7.7G     0  7.7G   0% /usr/lib/wsl/lib
rootfs         7.7G  2.7M  7.7G   1% /init
none           7.7G  560K  7.7G   1% /run
none           7.7G     0  7.7G   0% /run/lock
none           7.7G     0  7.7G   0% /run/shm
none           7.7G   76K  7.7G   1% /mnt/wslg/versions.txt
none           7.7G   76K  7.7G   1% /mnt/wslg/doc
C:\            466G  119G  347G  26% /mnt/c
D:\            3.7T  228G  3.5T   7% /mnt/d
none           7.7G  548K  7.7G   1% /mnt/wsl/docker-desktop/shared-sockets/host-services
/dev/sdd       115M   59M   48M  56% /mnt/wsl/docker-desktop/docker-desktop-user-distro
/dev/loop0     609M  609M     0 100% /mnt/wsl/docker-desktop/cli-tools
tmpfs          1.6G   20K  1.6G   1% /run/user/1000
tmpfs          1.6G   20K  1.6G   1% /run/user/0
C:\Program Files\Docker\Docker\resources  
               466G  119G  347G  26% /Docker/host

/ WSL Linux 루트는 다음과 같다

/dev/sdf       1007G  2.3G  954G   1% /
  • WSL2 VHD (가상 디스크)
  • 용량: 1TB 할당 형태
  • 실제 사용: 2.3GB
  • 여유: 954GB

/mnt/c, /mnt/d Windows C, D 드라이브

C:\            466G  119G  347G  26% /mnt/c
D:\            3.7T  228G  3.5T   7% /mnt/d
  • Windows 드라이브 그대로 마운트된 상태
  • 용량/사용량은 Windows와 동일 → 리눅스 앱이 Windows 파일을 직접 이용할 때 사용됨.