서버 응답이 느릴 때 점검해야 할 5가지


    “서버가 느려요”라는 말은 막연하지만, 점검해야 할 곳은 의외로 정해져 있습니다. CPU, 메모리, 디스크, 네트워크, 데이터베이스. 이 다섯 가지를 차례로 확인하면 대부분 병목 지점을 찾을 수 있습니다. 이 글에서 점검 순서를 정리했습니다.

    1. CPU 부하 확인

    가장 먼저 CPU가 묶여 있는지 봅니다.

    top
    

    특정 프로세스가 CPU를 독점하고 있거나, load average가 코어 수를 크게 넘는다면 CPU 병목입니다. 비효율적인 코드나 트래픽 급증이 흔한 원인입니다.

    2. 메모리 부족 확인

    메모리가 부족하면 시스템이 스왑(디스크를 메모리처럼 사용)을 쓰면서 급격히 느려집니다.

    free -h
    

    available 값이 매우 적고 swap 사용량이 높다면 메모리 부족이 원인입니다. 메모리를 많이 먹는 프로세스는 top에서 %MEM 기준으로 확인할 수 있습니다.

    3. 디스크 I/O 확인

    디스크 읽기/쓰기가 병목이 되는 경우도 많습니다. iostat로 디스크 부하를 봅니다.

    sudo apt install sysstat -y
    iostat -x 1
    

    %util이 계속 100%에 가깝다면 디스크가 한계에 도달한 상태입니다. 디스크가 꽉 찼는지도 함께 확인하세요.

    df -h
    

    4. 네트워크 점검

    응답이 느린 게 서버 내부가 아니라 네트워크 문제일 수도 있습니다. 외부 연결이 느린지, 특정 구간에서 지연이 생기는지 확인합니다.

    ping 대상주소
    

    대역폭이 가득 찼거나, 외부 API 응답이 느려서 전체가 지연되는 경우도 흔합니다.

    5. 데이터베이스 점검

    웹 서비스가 느릴 때 가장 흔한 진짜 범인은 데이터베이스입니다. 느린 쿼리 하나가 전체 응답을 잡아먹는 경우가 많습니다. MySQL이라면 실행 중인 쿼리를 확인합니다.

    SHOW PROCESSLIST;
    

    오래 걸리는 쿼리가 보인다면, 인덱스가 없거나 비효율적인 쿼리일 가능성이 높습니다. 슬로우 쿼리 로그를 켜서 추적하는 것도 좋은 방법입니다.

    점검 순서 요약

    순서점검 항목명령어
    1CPUtop
    2메모리free -h
    3디스크 I/Oiostat -x 1
    4네트워크ping
    5데이터베이스SHOW PROCESSLIST

    마무리

    서버가 느릴 때는 막연히 추측하지 말고 CPU → 메모리 → 디스크 → 네트워크 → DB 순서로 측정하며 병목을 좁혀가야 합니다. 추측이 아니라 측정이 핵심입니다. 평소 모니터링 도구를 설치해 정상 상태의 수치를 알아두면, 이상이 생겼을 때 훨씬 빠르게 원인을 짚을 수 있습니다.

    답글 남기기

    이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다