카테고리 없음

리눅스 서버 CPU 과부하 실전 대응 사례

고지존 2025. 8. 24. 18:37
반응형

오늘 아침, 웹 서버가 느려졌다는 알람이 도착했습니다. 평소보다 페이지 응답 속도가 10초 이상 지연되고 있어, CPU 과부하 가능성을 의심했습니다. 실제 운영 현장에서는 이런 상황을 어떻게 확인하고 대응하는지가 핵심입니다.

1. 문제 감지: CPU 사용률 확인

먼저 서버 접속 후 top -c를 실행했습니다. 화면 상단의 %Cpu(s) 항목에서 사용자(user) CPU가 90% 이상 차지하고 있는 것을 확인했습니다.

2. 원인 파악: 상위 CPU 사용 프로세스 확인

상세 확인을 위해 ps 명령어를 사용했습니다. CPU 사용률 기준으로 상위 5개 프로세스를 확인하고 문제의 프로세스를 식별했습니다.

ps -eo pid,ppid,cmd,%cpu --sort=-%cpu | head -n 5
  PID  PPID CMD                         %CPU
 4892  4888 nginx: worker process       95.0
 4893  4888 nginx: worker process       90.0

3. 초기 대응: 우선순위 조정

바로 종료하면 서비스 장애가 발생할 수 있기 때문에, 먼저 CPU 우선순위를 낮췄습니다.

renice +15 -p 4892
renice +15 -p 4893

이로 인해 다른 프로세스가 CPU를 원활히 사용하게 되었고, 서버 응답 속도가 점차 정상화되었습니다.

4. 문제 해결: 로그 분석과 근본 원인 확인

CPU 과다 사용이 반복되는 경우, 단순 대응보다 근본 원인 확인이 필요합니다. 이번 사례에서는 Nginx 로그를 확인한 결과, 특정 요청이 반복적으로 발생하며 워커 프로세스를 과부하시킨 것을 확인했습니다.

tail -n 100 /var/log/nginx/access.log | grep "특정 요청"

필요 시, 해당 요청을 차단하거나 서비스 최적화를 진행하여 재발을 방지합니다.

 

  • 알람 시스템과 모니터링을 연계하여 초기 대응 시간을 최소화
  • 우선순위 조정은 서비스 안정성을 해치지 않는 범위에서 사용
  • 반복 발생 시 로그 패턴 분석과 서비스 구조 개선 필수
  • 자동화 스크립트를 활용하여 상위 CPU 사용 프로세스 모니터링 가능

 

이번 사례처럼, CPU 과다 사용 상황에서는 단순 명령어 실행보다 **문제 감지 → 원인 파악 → 안전한 대응 → 근본 원인 해결** 순서가 중요합니다. 실무 경험을 기반으로 단계별로 접근하면 서버 안정성을 높이면서 문제를 신속하게 해결할 수 있습니다.

반응형