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