오늘 아침, 웹 서버가 느려졌다는 알람이 도착했습니다. 평소보다 페이지 응답 속도가 10초 이상 지연되고 있어, CPU 과부하 가능성을 의심했습니다. 실제 운영 현장에서는 이런 상황을 어떻게 확인하고 대응하는지가 핵심입니다.
먼저 서버 접속 후 top -c
를 실행했습니다. 화면 상단의 %Cpu(s) 항목에서 사용자(user) CPU가 90% 이상 차지하고 있는 것을 확인했습니다.
상세 확인을 위해 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
바로 종료하면 서비스 장애가 발생할 수 있기 때문에, 먼저 CPU 우선순위를 낮췄습니다.
renice +15 -p 4892
renice +15 -p 4893
이로 인해 다른 프로세스가 CPU를 원활히 사용하게 되었고, 서버 응답 속도가 점차 정상화되었습니다.
CPU 과다 사용이 반복되는 경우, 단순 대응보다 근본 원인 확인이 필요합니다. 이번 사례에서는 Nginx 로그를 확인한 결과, 특정 요청이 반복적으로 발생하며 워커 프로세스를 과부하시킨 것을 확인했습니다.
tail -n 100 /var/log/nginx/access.log | grep "특정 요청"
필요 시, 해당 요청을 차단하거나 서비스 최적화를 진행하여 재발을 방지합니다.
이번 사례처럼, CPU 과다 사용 상황에서는 단순 명령어 실행보다 **문제 감지 → 원인 파악 → 안전한 대응 → 근본 원인 해결** 순서가 중요합니다. 실무 경험을 기반으로 단계별로 접근하면 서버 안정성을 높이면서 문제를 신속하게 해결할 수 있습니다.