Firebase Realtime Database의 성능을 모니터링하고 앱의 잠재적 문제를 발견하는 몇 가지 방법을 소개합니다. 앱의 수신 및 발신 대역폭과 부하를 살펴보면 청구 비용을 예상할 수 있습니다. 또한 데이터베이스 작업을 명확하게 파악할 수 있어 이상이 발견될 경우 문제 해결 도구로도 유용합니다.
이 페이지에서는 Realtime Database 성능 모니터링을 설명합니다. 사용량 모니터링은 데이터베이스 사용량 모니터링을 참조하세요.
Realtime Database 모니터링 도구 사용
원하는 상세 수준에 따라 몇몇 도구를 통해 Realtime Database 성능에 대한 데이터를 수집할 수 있습니다.
Realtime Database 프로파일러 도구 사용
Realtime Database 프로파일러 도구는 데이터베이스의 읽기/쓰기 작업에 대한 실시간 개요를 제공합니다. 보고서에는 색인화되지 않은 쿼리 외에도 각 작업의 속도 및 페이로드 크기에 대한 정보가 포함됩니다. 하지만 연결 오버헤드에 대한 정보 내역이나 통계는 포함되지 않으므로 청구 비용을 예측하는 데 사용하면 안 됩니다.
프로파일러 도구 사용에 대한 자세한 내용은 데이터베이스 프로파일링을 참조하세요.
Firebase Console 사용
Firebase Console의 사용량 탭에서는 데이터베이스 동시 연결 수, 저장 중인 데이터 양, 발신 대역폭(프로토콜 및 암호화 오버헤드 포함), 1분 간격으로 측정한 데이터베이스 부하 등에 대한 정보를 제공합니다. 사용량 탭에서 데이터베이스의 전반적인 성능에 대한 개요를 보다 정확하게 파악할 수 있지만 이 정보만으로는 잠재적 성능 문제를 상세히 살펴보기에 부족할 수 있습니다.
Cloud Monitoring 사용
Google Cloud의 Cloud Monitoring을 사용하면 측정항목 탐색기를 통해 개별 성능 측정항목을 보거나 시간 경과에 따라 다양한 성능 측정항목의 조합을 표시하는 차트로 여러 대시보드를 만들 수 있습니다. Realtime Database를 Cloud Monitoring과 통합하면 가장 상세한 정보를 얻을 수 있습니다.
Cloud Monitoring 설정 단계는 데이터베이스 사용량 모니터링에 설명되어 있습니다.
특정 Cloud Monitoring 측정항목을 사용해 성능 문제를 발견하는 방법은 다음 섹션을 참조하세요.
Cloud Monitoring에서 성능 모니터링
업타임 또는 지연 시간을 포함한 성능 문제가 발생하는 경우 Cloud Monitoring을 사용하여 다음 측정항목을 모니터링할 수 있습니다.
모든 측정항목 유형의 이름은 firebasedatabase.googleapis.com/
으로 시작합니다.
측정항목 이름 | 설명 |
---|---|
데이터베이스 부하 |
|
네트워크 초과 시 사용 중지 |
|
저장용량 초과 시 사용 중지 |
|
대시보드에서 차트의 측정항목을 결합하면 유용한 통계 및 개요를 얻을 수 있습니다. 예를 들어 다음과 같은 조합을 시도해 보세요.
- 작업:
io/database_load
측정항목을 사용하면 각 작업 유형에서 사용되는 총 데이터베이스 부하량을 확인할 수 있습니다. 다른 작업 유형 문제를 해결하려면io/database_load
를 유형별로 그룹화해야 합니다. - 저장용량:
storage/limit
및storage/total_bytes
를 사용하면 Realtime Database 저장용량 한도와 관련된 스토리지 사용률을 모니터링할 수 있습니다. 또한storage/disabled_for_overages
를 추가해 저장용량 한도 초과로 인해 앱에 다운타임이 발생했는지도 확인할 수 있습니다. - SSL 오버헤드:
network/https_requests_count
를 사용하면 데이터베이스에서 수신한 SSL 연결 요청 수를 모니터링하고reused_ssl_session
필터로 기존 SSL 세션 티켓이 재사용된 요청을 구분할 수 있습니다. 이를network/sent_bytes_count
및network/sent_payload_and_protocol_bytes_count
와 비교 측정하여 앱에서 SSL 세션 티켓을 효율적으로 사용하는지 모니터링할 수 있습니다.
Cloud Monitoring을 통해 알림을 설정하고 Realtime Database 측정항목을 기반으로 알림을 받을 수도 있습니다.
예를 들어 io/database_load
가 특정 기준에 도달하면 알림을 받도록 선택할 수 있습니다.
Cloud Monitoring을 통해 제공되는 Realtime Database 측정항목의 전체 목록을 참조하세요.
데이터베이스 부하 유형
io/database_load
측정항목은 또한 어떤 작업 유형으로 인해 부하가 발생했는지 라벨을 제공합니다. 다음은 측정 가능한 작업의 유형입니다.
admin
: 규칙 설정 및 프로젝트 메타데이터 읽기와 같은 관리 작업입니다.auth
: 서비스 계정의 인증이나 단일 클라이언트에 대한 Firebase 인증을 검증합니다.client_management
: 동시 연결의 추가 및 삭제를 처리하며 여기에는 삭제 시 실행되는 연결 해제 작업이 포함됩니다.get_shallow
:shallow=true
로 REST GET에서 데이터를 가져옵니다.get
: REST GET 작업을 처리합니다.listen
: 연결된 클라이언트에서on
및once
작업의 초기 데이터를 가져옵니다.on_disconnect
: 클라이언트의 연결 해제 작업에 등록합니다.put
: 클라이언트의set
작업 또는 REST PUT 작업을 처리합니다.transaction
: 조건부 REST 요청이나 클라이언트의transaction
작업에서 트랜잭션을 수행합니다.update
:update
작업 또는 REST PATCH 요청을 처리합니다.
Cloud Monitoring의 보안 규칙 모니터링
보안 규칙의 평가를 분석할 수도 있습니다. 모든 측정항목 유형의 이름은 firebasedatabase.googleapis.com/
으로 시작합니다.
측정항목 이름 | 설명 |
---|---|
규칙 평가 | rules/evaluation_count . 쓰기 또는 읽기 요청에 대한 응답으로 수행된 실시간 데이터베이스 규칙의 평가 수입니다. 요청의 결과(ALLOW, DENY 또는 ERROR)를 기준으로 이 측정항목을 분류할 수 있습니다. |
예를 들면 특정 평가 결과(ALLOW, DENY 또는 ERROR)를 필터링하는 등 필요에 따라 규칙 평가를 위해 Cloud Monitoring 차트를 맞춤설정합니다. 차트 설정 및 맞춤설정은 데이터베이스 사용량 모니터링에 설명되어 있습니다.
Cloud Monitoring을 통해 제공되는 Realtime Database 측정항목의 전체 목록을 참조하세요.