tencent cloud

피드백

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

마지막 업데이트 시간:2021-08-04 14:41:57

    현상 설명

    TencentDB for MySQL에서 메모리가 갑자기 증가한 후 계속 늘어나 릴리스되지 않는 상황이 발생했습니다. 구체적인 현상은 인스턴스 모니터링의 메모리 사용률 모니터링 그래프에서 다음과 같이 확인됩니다.

    갑자기 증가하거나 장기간 완만하게 증가하는 과정에서 과도하게 높은 수준(>96%)에 도달해 일정 범위 내에서 소폭 변동하는 경우, 사용자 정의한 클라우드 모니터링 메모리 알람이 자주 트리거될 수 있습니다.

    장애 리스크

    SQL 명령이 비효율적이거나 데이터베이스 매개변수 설정이 적합하지 않은 경우 메모리 사용률이 높아집니다. TencentDB for MySQL 이중 노드 및 3중 노드 아키텍처 사용 중 갑자기 비즈니스 피크가 발생하여 CDB 메모리가 OOM(Out Of Memory)되어 사용할 수 없을 경우 마스터/슬레이브 전환이 트리거 될 수 있습니다. 마스터/슬레이브 전환 과정으로 인해 비즈니스를 일시적으로 사용하지 못하고, 인스턴스를 사용할 수 없게 되며, 사용할 수 없는 시간은 일반적으로 60초 이내입니다. 비즈니스 피크 시간에 마스터/슬레이브 전환이 진행되면 비즈니스의 안정성과 연속성에 심각한 영향을 미칠 수 있습니다.

    해결 방법

    MySQL 메모리는 global 레벨의 공유 메모리와 session 레벨의 전용 메모리로 구분됩니다.

    • 공유 메모리는 인스턴스 생성 시 할당되는 메모리 용량으로, 모든 연결이 공유합니다.
    • 전용 메모리는 MySQL 서버 연결 시 할당되는 개별 캐시입니다.
      일부 특수 SQL 또는 필드 유형은 단일 스레드가 캐시를 여러 번 할당하므로, OOM 이상 경고가 나타날 경우 그 원인은 각 연결의 전용 메모리에 있습니다. 데이터베이스 연결 수 제한 및 저효율 SQL 최적화를 통해 과도한 메모리 이용률로 인한 리스크를 낮출 수 있습니다. MySQL의 메모리 이용률이 여전히 높다면 메모리 설정 업그레이드를 통해 데이터베이스의 전체 동시 접속량을 늘리고 안정성을 높일 수 있습니다. 메모리 매개변수에 대한 자세한 설명은 메모리 할당 문제를 참조하십시오.

    처리 순서

    1. 슬로우 SQL을 최적화하여 session 레벨의 전용 메모리 사용량을 줄입니다. DBbrian을 통해 슬로우 SQL 분석 실행 할 수 있습니다.
    2. 유효하지 않는 장기간 연결을 줄이고 비즈니스에 영향을 주지 않는 상황에서 프로그램 측의 연결 풀 설정 혹은 동시 실행률을 낮춥니다. DBbrian을 통해 현 세션 정보 확인 할 수 있습니다.
    3. 모니터링 메모리 사용 현황(옵션 항목, MySQL 5.7 이상 버전만 적용): performance_schema의 메모리 모니터링 기능을 활성화합니다. performance_schema 활성화 후 performance_schema 라이브러리에서 이름이 memory_summary로 시작하는 테이블을 조회하여 메모리 사용 현황을 확인합니다. 예시: 전역 차원의 메모리 사용률 분석표: memory_summary_global_by_event_name
    4. 최적화 완료 후 조치: TencentDB for MySQL 설정 업그레이드
    설명:

    • 업그레이드 중에도 정상적인 작업이 가능합니다. 단, 업그레이드 완료 후 전환 과정에서 몇 초의 끊김이 발생할 수 있으므로 재연결 메커니즘을 확보하시기 바랍니다.
    • 메모리 또는 CPU 리소스 부족으로 인해 정상적인 서비스 운영에 영향을 미치지 않도록 현재 네트워크의 인스턴스에 적절한 리소스 알람 정책을 설정하시기 바랍니다. 리소스 부족에 대한 잠재적 리스크를 미리 알 수 있습니다. 자세한 내용은 알람 정책을 참조하십시오.
    문의하기

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

    기술 지원

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

    연중무휴 24시간 전화 지원