tencent cloud

TencentDB for MySQL

소식 및 공지 사항
제품 동향
신규 사용자 가이드
제품 소개
제품 개요
제품 장점
응용 시나리오
데이터베이스 아키텍처
격리 정책
제품 기능 목록
데이터베이스 인스턴스
고가용성(멀티 가용존)
리전 및 가용존
자체개발 커널
TXSQL 커널 개요
기능적 특성
성능적 특성
보안적 특성
안정적 특성
구매 가이드
과금 개요
구매 방법
연장 안내
연체 안내
환불 안내
인스턴스 비용 조정 설명
백업 공간 과금 안내
시작하기
시작 개요
MySQL 인스턴스 생성
운영 가이드
사용 제한
운영 개요
인스턴스의 점검 관리
인스턴스 프로모션
인스턴스 확장
데이터베이스 프록시
데이터베이스 관리(DMC)
계정 관리
매개변수 설정
백업과 롤백
데이터 마이그레이션
네트워크 및 보안
모니터링 및 알람
로그 센터
태그
사례 튜토리얼
TencentDB for MySQL의 사용 규범
애플리케이션 구성 자동 재연결
MySQL 마스터 인스턴스 매개변수 수정의 영향
MyISAM에서 InnoDB로의 자동 변환 제한
TencentDB for MySQL을 위한 VPC 생성
TencentDB for MySQL를 통해 비즈니스 부하 능력 향상
2리전 3데이터센터 재해 복구 아키텍처 구축
읽기/쓰기 분리로 TencentDB for MySQL 성능 향상
DTS를 사용하여 InnoDB에서 RocksDB로 데이터 마이그레이션
웹 애플리케이션을 위한 LAMP 스택 구축
Drupal 웹사이트 구축
Python을 통해 MySQL API 사용
백서
성능 백서
보안 백서
장애 처리
연결 관련
성능 관련
인스턴스 데이터 동기화 딜레이
케이스 인센시티브 설정 실패
API문서
History
Introduction
API Category
Instance APIs
Making API Requests
Data Import APIs
Database Proxy APIs
Database Audit APIs
Security APIs
Task APIs
Backup APIs
Account APIs
Rollback APIs
Parameter APIs
Database APIs
Monitoring APIs
Log-related API
Data Types
Error Codes
FAQs
과금 관련
백업 관련
롤백 관련
로그인
매개변수 수정
업그레이드 관련
계정 권한
성능 메모리
유지보수 관련 FAQ
데이터 마이그레이션
기능 특징
콘솔 관련
로그 관련
API 2.0에서 3.0으로 전환 가이드
Service Agreement
Service Level Agreement
Terms of Service
범용 참고
표준 및 인증
고객센터
용어집

CPU 이 용 률 이 너무 높다

PDF
포커스 모드
폰트 크기
마지막 업데이트 시간: 2024-07-25 16:38:48

문제 설명

TencentDB for MySQL에 응답이 느리거나, 연결할 수 없거나, 시간 초과 현상이 발생하였습니다. TencentDB for MySQL의 CPU 사용률이 80%를 초과하면 서비스 응답이 느려지거나 시간이 초과되거나 데이터베이스가 연결되지 않을 수 있습니다.
TencentDB for MySQL 인스턴스의 CPU 사용률은 TencentDB for MySQL 콘솔 또는 DBbrain 콘솔의 인스턴스 모니터링 페이지에서 확인할 수 있습니다.
설명:
CPU 사용률이 너무 높아지면 정상적인 업무 운영을 위해 데이터베이스 인스턴스 사양 변경의 안내에 따라 CPU 사양을 먼저 높일 것을 권장합니다. 후속적으로 이 문서를 참고하여 문제 해결 및 최적화를 진행할 수 있습니다.

장애 리스크

MySQL CPU 이용률이 너무 높은 상태로 장시간 유지되면 데이터베이스의 전체 성능이 크게 저하될 수 있으며, 심한 경우 인스턴스가 정지될 수도 있습니다.
HA 시스템이 이러한 문제를 감지하면 비즈니스의 고가용성을 유지하기 위해 원본-복제 전환을 트리거합니다. 전환하는 동안 일반적으로 60초 미만 동안 인스턴스를 사용할 수 없습니다. 피크 시간에 전환이 발생하면 비즈니스 안정성과 연속성에 심각한 영향을 미칩니다.
CPU 리소스 부족으로 비즈니스가 영향을 받지 않도록 하려면 CPU 사용률이 높은 인스턴스에 대해 애플리케이션을 최적화하거나 CPU 리소스를 업그레이드하는 것이 좋습니다. 원본-복제 전환 시 단 몇 초 동안만 연결이 끊어집니다. 따라서 지속적인 연결을 위해서는 애플리케이션에 재연결 메커니즘이 있어야 합니다.

가능한 원인

MySQL의 CPU 리소스는 주로 시스템 스레드와 사용자 스레드에서 사용됩니다. 따라서 CVM이 TencentDB for MySQL 인스턴스에서 독점적으로 사용되는 경우 두 가지 유형의 스레드에 집중하는 것만으로도 대부분의 문제를 해결할 수 있습니다.

사용자 스레드

사용자 스레드가 혼잡한 경우 대부분 ‘슬로우 쿼리’, ‘과도한 계산’ 및 ‘높은 QPS’(초당 쿼리 수)로 인해 발생합니다.
슬로우 쿼리 order by, group by, 임시 테이블, join 등을 포함하는 쿼리는 매우 비효율적이어서 단일 SQL 문을 계산하는 데 CPU 시간이 훨씬 더 오래 걸립니다.
과도한 계산 많은 양의 데이터 때문에 과도한 계산이 발생합니다.
높은 QPS(Queries Per Second) QPS가 높으면 CPU 시간이 길어집니다. 예를 들어, 4코어 서버가 20k - 30k의 높은 QPS를 유지하는 경우 단일 SQL 문의 CPU 시간이 짧더라도 총 CPU 시간이 매우 길어질 수 있습니다.

시스템 스레드

프로덕션 환경에서는 시스템 스레드 문제 발생은 그리 많지 않습니다. 일반적으로 여러 시스템 스레드의 CPU 사용률은 CVM에 사용 가능한 CPU 코어가 4개 이상 있는 한 동시에 너무 높거나 100%에 가까운 경우가 거의 없습니다. 그러나 아래 이미지와 같이 CPU 사용률에 영향을 줄 수 있는 몇 가지 bug가 있습니다.


해결 방법

대부분의 CPU 문제는 사용량이 많은 사용자 스레드로 인해 발생합니다. 다음 섹션에서는 사용자 스레드로 인해 발생하는 높은 CPU 사용률에 대한 솔루션에 중점을 둡니다.
슬로우 쿼리: 슬로우 쿼리를 식별하고 최적화하려면 DBbrain을 권장합니다. 자세한 내용은 슬로우 쿼리를 참고하십시오.
과도한 계산: 많은 양의 데이터로 인해 발생하는 높은 CPU 사용률 문제를 해결하려면 과도한 계산을 참고하십시오.
높은 QPS: 너무 많은 액세스 요청으로 인한 높은 CPU 사용률 문제를 해결하려면 높은 QPS을 참고하십시오.

문제 해결 단계

슬로우 쿼리

DBbrain을 사용하여 높은 CPU 사용률을 유발하는 SQL 문을 식별하고 최적화합니다.
예외 진단(권장): 이 기능은 7 * 24시간 예외를 감지 및 진단하고 실시간으로 최적화 제안을 제공합니다. 자세한 내용은 Method 1 (recommended). Use the exception diagnosis feature to troubleshoot database exceptions를 참고하십시오.
슬로우 SQL 분석: 이 기능은 현재 인스턴스의 느린 SQL 문을 분석하고 최적화 제안을 제공합니다. 자세한 내용은 Method 2. Use the "slow SQL analysis" feature to troubleshoot SQL statements that lead to high CPU utilization을 참고하십시오.
감사 로그 분석: 이 기능은 SQL 문에 대한 심층 분석을 수행하고 TencentDB 감사 데이터(전체 SQL)를 기반으로 최적화 제안을 제공합니다. 자세한 내용은 Method 3. Use the "audit log analysis" feature to troubleshoot SQL statements that cause high CPU utilization을 참고하십시오.
MySQL에서는 슬로우 쿼리 시간(long_query_time)이 기본적으로 10s로 설정됩니다. 성능 문제가 발생한 후 슬로우 쿼리가 발견되지 않으면 매개변수 값을 1s로 조정한 후 비즈니스 사이클에서 슬로우 쿼리가 있는지 관찰하고 있는 경우 그에 따라 슬로우 쿼리를 최적화하는 것이 좋습니다. 매개변수를 조정한 후에도 여전히 슬로우 쿼리가 발견되지 않았지만 CPU 사용률이 높은 경우 데이터베이스의 전반적인 성능을 향상시키기 위해 CPU 구성을 업그레이드하는 것이 좋습니다.

과도한 계산

MySQL이 방대한 양의 데이터를 처리할 때 인덱스와 쿼리 실행 계획이 잘 작동하더라도 CPU 사용률이 높을 수 있습니다. 또한 이러한 문제는 MySQL의 one-thread-per-connection 기능으로 인해 낮은 동시성에서도 여전히 발생할 수 있습니다.
일반적으로 두 가지 일반적인 솔루션이 있습니다.
읽기/쓰기 분리를 활성화합니다. 비즈니스 액세스 부하가 낮은 읽기 전용 복제본 노드에서 이 유형의 쿼리를 실행합니다.
큰 SQL 쿼리를 더 작은 쿼리로 분할하도록 프로그램을 최적화합니다.

높은 QPS

CPU 사양을 업그레이드하여 전체 데이터베이스 성능을 개선합니다.
읽기 전용 인스턴스를 사용하여 원본 인스턴스의 로드를 분담합니다.
쿼리 문을 최적화하여 효율성을 높입니다.

도움말 및 지원

문제 해결에 도움이 되었나요?

피드백