tencent cloud

피드백

지나치게 높은 인스턴스 메모리 사용률

마지막 업데이트 시간:2024-02-02 11:09:48

    현상 설명

    Linux CVM 인스턴스에 메모리 문제로 장애가 발생했습니다(예시: 시스템 내부 서비스 응답 속도 감소, 서버 로그인 불가, 시스템 OOM 트리거 등).

    예상 원인

    지나치게 높은 인스턴스 메모리 사용률이 원인인 것으로 보입니다. 보통 인스턴스 메모리 사용률이 지속적으로 90%를 넘을 경우 사용률이 지나치게 높다고 판단합니다.

    문제 진단

    1. 처리 순서를 참조하여 인스턴스 메모리 사용률이 지나치게 높아서 생긴 문제인지 판단합니다.
    2. 기타 메모리 문제의 전형적인 사례 분석을 참조하여 문제 원인을 파악합니다.

    처리 순서

    1. 관련 작업을 참조하여 메모리 사용률이 지나치게 높지는 않은지 확인합니다.
    메모리 사용률이 지나치게 높다면 다음 단계를 실행합니다.
    메모리 사용률이 정상인 경우 기타 메모리 문제의 전형적인 사례 분석을 참조하여 자세한 문제 원인을 파악합니다.
    2. 시스템 내부에서 top 명령어를 실행한 후 M을 눌러 'RES'나 'SHR' 열에 메모리 점유율이 지나치게 높은 프로세스가 있는지 확인합니다.
    없는 경우 다음 단계를 실행합니다.
    있는 경우 프로세스 유형에 맞춰 작업을 진행합니다. 자세한 내용은 프로세스 분석을 참조하십시오.
    3. 다음 명령어를 실행하여 공유 메모리 점유율이 지나치게 높지는 않은지 확인합니다.
    cat /proc/meminfo | grep -i shmem
    반환 결과는 다음 이미지와 같습니다.
    
    
    4. 다음 명령어를 실행하여 회수할 수 없는 slab 메모리의 점유율이 지나치게 높지는 않은지 확인합니다.
    cat /proc/meminfo | grep -i SUnreclaim
    반환 결과는 다음 이미지와 같습니다.
    
    
    5. 다음 명령어를 실행하여 Hugepage 메모리가 있는지 확인합니다.
    cat /proc/meminfo | grep -iE "HugePages_Total|Hugepagesize"
    반환 결과는 다음 이미지와 같습니다.
    
    
    HugePages_Total의 출력값이 0인 경우 기타 메모리 문제의 전형적인 사례 분석을 참조하여 자세한 문제 원인을 파악합니다.
    HugePages_Total의 출력값이 0이 아닌 경우 Hugepage 메모리가 설정되어 있다는 의미입니다. Hugepage 메모리의 크기는 HugePages_Total*Hugepagesize이며, Hugepage가 다른 악성 프로그램을 위해 설정된 것은 아닌지 확인해야 합니다. Hugepage 메모리가 필요하지 않다면 /etc/sysctl.conf 파일의 vm.nr_hugepage 설정 항목에 주석을 달고 sysctl -p 명령어를 실행하여 Hugepage 메모리 설정을 해제합니다.

    관련 작업

    메모리 사용률 조회

    Linux 릴리스 버전마다 free 명령어 출력의 의미가 다를 수 있기 때문에 free 명령어 출력 정보만으로 메모리 사용률을 계산할 수는 없습니다. 그러므로 다음 절차를 따라 Tencent Cloud 모니터링을 통해 메모리 사용률을 확인하시기 바랍니다.
    1. CVM 콘솔에 로그인하여 인스턴스 관리 페이지를 클릭합니다.
    2. 인스턴스 ID를 선택하고 해당 인스턴스 상세 페이지로 이동하여 [모니터링] 탭을 선택합니다.
    3. '메모리 모니터링'에서 다음과 같이 해당 인스턴스의 메모리 사용률을 조회할 수 있습니다.
    
    

    컴퓨팅 메모리 사용률

    메모리 모니터링에서 메모리 사용률은 총 메모리 중 사용한 메모리의 비율로 계산합니다. 버퍼와 시스템 캐시가 점유하는 콘텐츠는 포함되지 않습니다. 계산 프로세스는 다음과 같습니다. = (Total - available)100% / Total = (Total - (Free + Buffers + Cached + SReclaimable - Shmem))100% /Total = (Total - Free - Buffers - Cached - SReclaimable + Shmem)* 100% / Total
    계산 프로세스에서 사용하는 Total, Free, Buffer, Cached, SReclaimable, Shmem 매개변수는 /proc/meminfo에서 획득할 수 있습니다. 다음은 /proc/meminfo 예시입니다.
    1. [root@VM_0_113_centos test]# cat /proc/meminfo
    2. MemTotal: 16265592 kB
    3. MemFree: 1880084 kB
    4. ......
    5. Buffers: 194384 kB
    6. Cached: 13647556 kB
    7. ......
    8. Shmem: 7727752 kB
    9. Slab: 328864 kB
    10. SReclaimable: 306500 kB
    11. SUnreclaim: 22364 kB
    12. ......
    13. HugePages_Total: 0
    14. Hugepagesize: 2048 kB
    다음은 매개변수에 대한 설명입니다.
    매개변수
    설명
    MemTotal
    시스템 총 메모리입니다.
    MemFree
    시스템 잔여 메모리입니다.
    Buffers
    블록 디바이스가 점유하는 캐시 페이지입니다. 직접 읽기/쓰기 블록 디바이스와 파일 시스템 메타데이터가 여기에 포함됩니다(예: SuperBlock이 사용하는 캐시 페이지).
    Cached
    page cache입니다. tmpfs의 파일 POSIX/SysV shared memoryshared anonymous mmap이 포함됩니다.
    Shmem
    tmpfs 등 공유 메모리를 포함합니다.
    Slab
    커널 slab 할당자가 할당한 메모리는 slabtop로 조회할 수 있습니다.
    SReclaimable
    회수할 수 있는 slab입니다.
    SUnreclaim
    회수할 수 없는 slab입니다.
    HugePages_Total
    Hugepage 메모리의 총 수량입니다.
    Hugepagesize
    Hugepage 메모리 1페이지의 크기입니다.
    

    기타 메모리 문제의 전형적인 사례 분석

    위 절차를 따랐음에도 문제가 처리되지 않거나, CVM 사용 시 아래 유형의 오류 정보가 나타난다면 다음 솔루션을 참조하십시오.
    문의하기

    고객의 업무에 전용 서비스를 제공해드립니다.

    기술 지원

    더 많은 도움이 필요하시면, 티켓을 통해 연락 바랍니다. 티켓 서비스는 연중무휴 24시간 제공됩니다.

    연중무휴 24시간 전화 지원