Cloud Firestore(베타) 공개: Firebase와 Google Cloud Platform의 새롭고 유연하며 확장 가능한 데이터베이스를 사용해 보세요. Cloud Firestore 자세히 알아보기

데이터베이스 성능 모니터링

Firebase 실시간 데이터베이스의 성능을 모니터링하고 앱의 잠재적 문제를 발견하는 몇 가지 방법을 소개합니다. 앱의 수신 및 발신 대역폭과 부하를 살펴보면 청구 비용을 예상할 수 있습니다. 또한 데이터베이스 작업의 명확한 파악이 가능해 이상이 발견될 경우 문제해결 도구로도 유용합니다.

실시간 데이터베이스 모니터링 도구 사용

원하는 세부 수준에 따라 몇몇 도구를 통해 실시간 데이터베이스 성능에 대한 데이터를 수집할 수 있습니다.

실시간 데이터베이스 프로파일러 도구 사용

실시간 데이터베이스 프로파일러 도구는 데이터베이스의 읽기/쓰기 작업에 대한 실시간 개요를 제공합니다. 보고서에는 색인화되지 않은 쿼리 외에도 각 작업의 속도 및 페이로드 크기에 대한 정보가 포함됩니다. 하지만 연결 오버헤드에 대한 이전 정보나 통계는 포함되지 않으므로 청구 비용을 예측하는 데 사용하면 안 됩니다.

프로파일러 도구 사용에 대한 자세한 내용은 데이터베이스 프로파일링을 참조하세요.

Firebase 콘솔 사용

Firebase 콘솔Usage(사용량) 탭은 데이터베이스 동시 연결, 저장 중인 데이터량, 발신 대역폭(프로토콜 및 암호화 오버헤드 포함), 데이터베이스 부하를 1분 간격으로 로드에 대한 정보를 제공합니다. 사용량 탭에서 데이터베이스의 전반적인 성능에 대한 개요를 보다 정확하게 파악할 수 있지만 이 정보만으로는 잠재적 성능이나 청구 문제를 해결하기에 부족할 수 있습니다.

Firebase 콘솔의 사용량 통계에 관한 자세한 내용은 청구 사용량 추정을 참조하세요.

Stackdriver Monitoring 사용

Google Cloud Platform에서 Stackdriver Monitoring을 사용하면 측정항목 탐색기로 개별 성능 측정항목을 확인하거나 시간에 따른 여러 성능 측정항목의 조합을 표시하는 차트가 포함된 다양한 대시보드를 만들 수 있습니다. 실시간 데이터베이스를 Stackdriver Monitoring과 통합하면 가장 상세한 정보를 얻을 수 있습니다.

Stackdriver Monitoring을 시작하려면 Google Compute Engine 빠른 시작에 나온 단계를 따르세요.

Stackdriver Monitoring을 설정한 후 측정항목 탐색기를 사용하거나 차트가 포함된 대시보드를 만들어 대시보드 성능을 모니터링할 수 있습니다.

Stackdriver Monitoring을 통해 제공되는 실시간 데이터베이스 성능 측정항목의 전체 목록은 GCP 측정항목 목록에 나와 있습니다. 특정 측정항목을 사용해 청구 또는 성능 문제를 발견하는 방법은 다음 섹션을 참조하세요.

청구 사용량 모니터링

Firebase 콘솔의 사용량 탭과 Stackdriver Monitoring에서 제공하는 측정항목은 실시간 데이터베이스의 청구 사용량을 예측하는 데 도움이 됩니다. 하지만 Firebase 콘솔과 Stackdriver에서 제공되는 사용량 통계는 추정치에 불과하다는 사실에 유의해야 합니다. 청구에 대한 자세한 내용은 실시간 데이터베이스 청구 이해를 참조하세요.

Stackdriver Monitoring을 사용해 청구 사용량을 모니터링하려면 다음 측정항목을 추적하세요.

  • network/sent_payload_bytes_count: 이 측정항목은 데이터베이스 작업(가져오기, 쿼리, 쓰기, 실시간 리스너 업데이트, 브로드캐스트 등)을 통해 요청된 데이터 크기를 나타냅니다. 연결 오버헤드(프로토콜 또는 암호화)는 포함되지 않습니다. sent_payload_bytes_count는 발신 대역폭 비용에 반영되지만 총 청구 비용에는 적용되지 않습니다. 데이터베이스에서 요청에 대한 응답으로 전송된 데이터의 추정치이지만 실제로 전송된 데이터가 아닌, 요청된 데이터의 페이로드 크기를 측정하므로 정확하지 않을 때도 있습니다.
  • network/sent_payload_and_protocol_bytes_count: 이 측정항목은 위에서 설명한 페이로드 데이터 크기와 연결에 필요한 프로토콜 오버헤드(예: HTTP 헤더, WebSocket 프레임, Firebase 실시간 프로토콜 프레임) 크기를 나타냅니다. 보안 연결의 암호화 비용은 반영하지 않습니다.
  • network/sent_bytes_count: 이 측정항목은 데이터베이스에서 읽기를 통해 전송된 총 데이터 크기 추정치를 나타냅니다. 연결 비용을 초래하는 프로토콜 및 암호화 오버헤드 외에도 실제로 클라이언트에 전송되는 페이로드 데이터가 포함됩니다. 실시간 데이터베이스 청구의 총 발신 대역폭을 가장 정확히 반영하는 측정항목입니다.

  • storage/total_bytes: 이 측정항목을 사용하면 데이터베이스에 저장 중인 데이터량을 모니터링할 수 있습니다. 실시간 데이터베이스에 저장하는 데이터가 청구 비용에 반영됩니다.

대시보드에서 차트의 측정항목을 결합하면 유용한 통계 및 개요를 얻을 수 있습니다. 예를 들어 다음과 같은 조합을 시도해 보세요.

  • 발신 데이터: network/sent_bytes_count, network/sent_payload_and_protocol_bytes_count, network/sent_payload_bytes_count 측정항목을 사용하면 청구서에 예상치 못한 비용을 초래하는 프로토콜 또는 암호화 오버헤드의 잠재적 문제를 발견할 수 있습니다. 요청된 데이터 페이로드 크기와 연결 오버헤드를 나타내는 다른 측정항목 간에 차이가 클 경우 시간 초과 또는 연결 빈도 문제를 해결해야 할 수 있습니다. TLS 세션 티켓을 사용하지 않았다면 이를 발급해 재개된 연결의 SSL 연결 오버헤드를 줄이는 것이 좋습니다.
  • 작업: io/database_load 측정항목을 사용하면 각 작업 유형에서 사용되는 총 데이터베이스 로드 양을 확인할 수 있습니다. io/database_load를 유형별로 그룹화해 다양한 작업 유형의 문제를 해결하세요.
  • 저장소: storage/limitstorage/total_bytes를 사용하면 실시간 데이터베이스 저장용량 한도와 관련된 저장소 사용률을 모니터링할 수 있습니다.

Stackdriver Monitoring을 통해 제공되는 실시간 데이터베이스 측정항목 전체 목록을 참조하세요.

성능 모니터링

가동시간 또는 지연과 같은 성능 문제가 있을 경우 Stackdriver를 사용해 다음 측정항목을 모니터링할 수 있습니다.

  • io/database_load: 이 측정항목을 사용하면 요청을 처리하는 동안 사용되는 가용 데이터베이스 대역폭을 시간 경과에 따라 모니터링할 수 있습니다. 데이터베이스 부하가 총 가용 대역폭에 가까워지면 성능 문제가 발생할 수 있습니다. 또한 부하가 가장 많이 사용되는 작업 유형을 파악하고 그에 따라 문제를 해결할 수도 있습니다. 1분 이상 걸리는 작업에서는 보고된 부하가 100%를 초과할 수 있습니다. 이는 수 분 동안 사용된 총 대역폭이 작업이 완료된 후 분 단위 보고 간격으로 압축될 때 발생하는 현상입니다.
  • network/disabled_for_overages: 이 측정항목은 실시간 데이터베이스가 대역폭 또는 네트워크 한도를 초과한 경우에 발생했을 수 있는 모든 중단을 나타냅니다.
  • storage/disabled_for_overages: 이 측정항목은 실시간 데이터베이스가 저장용량 한도를 초과한 경우에 발생했을 수 있는 모든 중단을 나타냅니다.

대시보드에서 차트의 측정항목을 결합하면 유용한 통계 및 개요를 얻을 수 있습니다. 예를 들어 다음과 같은 조합을 시도해 보세요.

  • 작업: io/database_load 측정항목을 사용하면 각 작업 유형에서 사용되는 총 데이터베이스 로드 양을 확인할 수 있습니다. io/database_load를 유형별로 그룹화해 다양한 작업 유형의 문제를 해결하세요.
  • 저장소: storage/limitstorage/total_bytes를 사용하면 실시간 데이터베이스 저장용량 한도와 관련된 저장소 사용률을 모니터링할 수 있습니다. 또한 storage/disabled_for_overages를 추가해 저장용량 한도 초과로 인해 앱에 다운타임이 발생했는지도 확인할 수 있습니다.
  • SSL 오버헤드: network/https_requests_count를 사용하면 데이터베이스에서 수신한 SSL 연결 요청 수를 모니터링하고 reused_ssl_session 필터로 기존 SSL 세션 티켓이 재사용된 요청을 나눌 수 있습니다. 이를 network/sent_bytes_countnetwork/sent_payload_and_protocol_bytes_count와 비교 측정하여 앱에서 SSL 세션 티켓을 효율적으로 사용하는지 모니터링할 수 있습니다.

Stackdriver Monitoring을 통해 알림을 설정하고 실시간 데이터베이스 측정항목을 기반으로 한 알림을 받을 수도 있습니다. 예를 들어 io/database_load가 특정 기준에 도달하면 알림을 받도록 선택할 수 있습니다.

Stackdriver Monitoring을 통해 제공되는 실시간 데이터베이스 측정항목 전체 목록을 참조하세요.

데이터베이스 로드 유형

io/database_load 측정항목은 또한 어떤 작업 유형으로 인해 로드가 발생했는지 라벨을 제공합니다. 다음은 측정 가능한 작업의 유형입니다.

  • admin: 규칙 설정 및 프로젝트 메타데이터 읽기와 같은 관리 작업입니다.
  • auth: 서비스 계정의 인증이나 단일 클라이언트에 대한 Firebase 인증을 검증합니다.
  • client_management: 동시 연결의 추가 및 삭제를 처리하며 여기에는 삭제 시 실행되는 연결 해제 작업이 포함됩니다.
  • get_shallow: shallow=true로 REST GET에서 데이터를 가져옵니다.
  • get: REST GET 작업을 처리합니다.
  • listen: 연결된 클라이언트에서 ononce 작업의 초기 데이터를 가져옵니다.
  • on_disconnect: 클라이언트의 연결 해제 작업에 등록합니다.
  • put: 클라이언트의 set 작업 또는 REST PUT 작업을 처리합니다.
  • transaction: 조건부 REST 요청이나 클라이언트의 transaction 작업에서 트랜잭션을 수행합니다.
  • update: update 작업 또는 REST PATCH 요청을 처리합니다.

다음에 대한 의견 보내기...

Firebase 실시간 데이터베이스
도움이 필요하시나요? 지원 페이지를 방문하세요.