[장애 발생 대응] 12주차-2-3일차: 장애 발생 원인 분석 및 해결방법 & 장애 대응 프로세스 구축

limlim·2025년 3월 12일
0

KDT

목록 보기
20/21

네트워크 장애 원인 분석 및 해결 방법

1) 서버 간 패킷 손실

  • 서버 간 네트워크가 불안정하여 요청이 손실됨

  • 해결 방법: ping, traceroute로 확인 후 방화벽 설정 점검

2) DNS 문제

  • 도메인 네임이 올바르게 해석되지 않음

  • 해결 방법: nslookup, dig로 DNS 상태 확인

3) 방화벽 설정 오류

  • 특정 포트가 차단됨

  • 해결 방법: iptables -L, firewalld 확인

리소스 부족(CPU, 메모리, 디스크) 원인 분석 및 해결 방법

1) CPU 100% 사용

  • 원인: 무한 루프, 과부하

  • 해결 방법: top, htop으로 확인 후 프로세스 최적화

2) 메모리 누수

  • 원인: GC 문제, 메모리 해제 실패

  • 해결 방법: free -m, top으로 메모리 상태 확인

3) 디스크 부족

  • 원인: 로그 파일 누적, 대용량 데이터 저장

  • 해결 방법: df -h, du -sh로 디스크 사용량 분석

cf) 서버의 CPU 사용량을 확인하는 기본적인 명령어

  • PID : 프로세스 ID (각 프로세스를 식별하는 고유한 번호)

  • COMMAND : 실행 중인 프로세스(애플리케이션) 이름

  • %CPU : 해당 프로세스가 사용하는 CPU 비율

  • TIME : 프로세스가 실행된 총 CPU 사용 시간

  • #TH : 프로세스가 실행하는 스레드 개수

  • WQ : Work Queue(작업 큐) 개수

  • #PORTS : 해당 프로세스가 사용하는 포트 개수

  • MEM : 프로세스가 사용하는 물리적 메모리(RAM) 크기

  • PURG : 정리 가능한 메모리 크기 (일부 캐시된 메모리)

  • CMPRS : 압축된 메모리 사용량

  • PGRP : 프로세스 그룹 ID

서비스 간 의존성 문제 원인 분석 및 해결 방법

(원인 분석)

1) 동기 호출

  • 서비스 간 API 호출이 동기적으로 동작하여 응답을 기다려야 함

  • ex) REST API 요청 대기 시간이 길어져 서비스가 느려짐

2) 순환 의존성

  • 서로 다른 서비스가 서로를 호출하면서 무한 루프 발생 가능

  • ex) A -> B 호출, B -> A 호출로 인해 응답 대기

3) 트랜잭션 롤백 문제

  • 분산 환경에서 트랜잭션 일관성을 보장하기 어려움

  • ex) 데이터 저장 도중 일부 서비스가 실패하여 불완전한 데이터 저장

(해결 방법)

1) 비동기 메시징

  • 서비스 간 직접 호출 대신 메시지 큐(Kafka, RabbitMQ)를 사용

2) Circuit Breaker 패턴

  • 장애 발생 시 일정 시간 동안 요청 차단

3) API Gateway를 통한 서비스 분리

  • 모든 서비스 호출을 API Gateway를 통해 관리

4) SAGA 패턴을 통한 트랜잭션 관리

  • 분산 트랜잭션에서 롤백 가능하도록 관리

배포 실패 문제 원인 분석 및 해결 방법

(원인 분석)

1) 환경 변수 설정 오류

2) 데이터베이스 마이그레이션 실패

3) 트래픽 급증으로 인한 장애

4) 무중단 배포 전략 미적용

(해결 방법)

1) Blue-Green Deployment

  • 현재 운영 중인 버전(Blue)과 새 버전(Green) 동시 운영 후 전환

2) Canary Deployment

  • 전체 배포 전에 일부 트래픽만 새 버전으로 전송

3) Feature Toggle 적용

  • 기능을 배포한 후 특정 사용자에게만 활성화

4) 자동화된 배포 테스트 (CI/CD)

  • 배포 전에 자동으로 테스트 수행

DB 이슈 원인 분석 및 해결 방법

(원인 분석)

1) 성능 문제

2) 데이터 일관성 문제

3) 데드락 발생

4) Connection Pool 과부하

5) Replication 지연

6) DB 트랜잭션 롤백 문제

(해결 방법)

  • 성능 문제 해결방법
    : 인덱스 최적화, Query 튜닝, 캐싱 적용, Sharding 적용, Connection Pool 최적화

  • 장애 발생 시 신속하게 대응 가능한 전략
    : Auto Failover 설정, Backup & Restore 전략, Read Replica 활용, 트랜잭션 로깅 및 롤백

장애 진단 프로세스 5단계

1) 장애 탐지

  • 장애 발생 여부를 모니터링 시스템을 통해 확인

  • 주요 도구: Prometheus, ELK, Grafana

2) 초기 진단

  • 로그 및 시스템 상태 확인

  • 주요 도구: journalctl, tail -f, kubectl logs

3) 원인 분석

  • 서비스, 네트워크, DB 등 문제 발생 원인 식별

  • 주요 도구: Jaeger, Wireshark, MySQL EXPLAIN

4) 대응 및 복구

  • 임시 해결책 적용 및 서비스 복구

  • 주요 도구: Kubernetes Rollback, Auto Healing

5) 사후 분석

  • 장애 발생 원인 정리 및 재발 방지 대책 수립

  • 주요 도구: Incident Report, 블레임리스 문화 적용

장애 발생 및 대응 사례 예시 참고 링크

profile
不怕慢,只怕站 개발자

0개의 댓글