문제 해결하기

이 페이지에서는 Firestore 관련 문제를 해결하는 방법을 보여줍니다.

지연 시간

아래 표에서는 늘어난 지연 시간의 가능한 원인을 설명합니다.

지연 시간 원인 영향을 받는 작업 유형 해결 방법
500-50-5 규칙을 초과하는 지속되는 트래픽 읽기, 쓰기

빠른 트래픽 증가를 위해 Firestore는 늘어난 수요를 충족시키기 위해 자동으로 확장을 시도합니다. Firestore가 확장되면 지연 시간 감소가 시작됩니다.

핫 스팟(좁은 문서 범위에 대한 높은 읽기, 쓰기, 삭제 비율)으로 인해 Firestore의 확장 기능이 제한됩니다. 규모 확장을 위한 설계를 검토하고 애플리케이션의 핫 스팟을 식별합니다.

단일 문서를 너무 자주 업데이트하거나 트랜잭션으로 인한 경합 읽기, 쓰기

개별 문서에 대한 쓰기 속도를 초당 한 번 미만으로 유지합니다.

트랜잭션의 데이터 경합 및 트랜잭션 사용 방법을 검토합니다.

병합-조인 쿼리가 느립니다. read 예를 들어 동등 필터가 여러 개(==) 있지만 복합 색인이 지원되지 않는 쿼리의 경우 병합-조인 쿼리가 느려질 수 있습니다. 성능을 개선하려면 이러한 쿼리에 복합 색인을 추가하세요. 자세한 내용은 Firestore 쿼리가 느린 이유는 무엇인가요?의 이유 #3을 참조하세요.
많은 문서를 반환하는 대형 읽기 read 페이지로 나누기를 사용하여 대량 읽기를 분할합니다.
최근 삭제가 너무 많습니다. 읽기
데이터베이스에서 컬렉션을 나열하는 작업에 큰 영향을 줍니다.
너무 많은 최근 삭제로 인해 지연 시간이 발생한 경우 잠시 기다리면 문제가 자동으로 해결됩니다. 문제가 해결되지 않으면 지원팀에 연락하세요.
리스너 추가 및 삭제가 너무 빠릅니다. 실시간 리스너 쿼리 실시간 업데이트를 위한 권장사항을 참조하세요.
대용량 문서 또는 결과가 많은 쿼리 리슨 실시간 리스너 쿼리 실시간 업데이트를 위한 권장사항을 참조하세요.
특히 배열 필드 및 맵 필드의 경우 색인 팬아웃 write 배열 필드 및 맵 필드 사용량을 검토합니다. 맵 필드의 경우 색인 생성에서 하위 필드를 사용 중지할 수 있습니다.
대량 쓰기 및 배치 쓰기 write

각 배치 쓰기에서 쓰기 수를 줄여보세요. 배치 쓰기는 원자성 작업이며, 단일 배치의 여러 쓰기로 인해 지연 시간 및 경합이 늘어날 수 있습니다. 예를 들어 10번의 배치 쓰기는 500번의 배치 쓰기보다 성능이 높습니다.

원자성이 필요하지 않은 일괄 데이터 항목의 경우 동시에 로드되는 개별 쓰기와 함께 서버 클라이언트 라이브러리를 사용합니다. 일괄 쓰기의 성능은 직렬화된 쓰기보다 우수하지만 동시 로드 쓰기보다는 떨어집니다.

오류 코드

이 섹션에서는 발생할 수 있는 문제를 나열하고 각 문제를 해결하는 방법을 제안합니다.

DEADLINE_EXCEEDED

다음으로 인해 DEADLINE_EXCEEDED 오류가 증가할 수 있습니다.

  • 지연 시간의 증가로 인해 작업이 완료되는 시간이 마감시간(기본적으로 60초)보다 오래 걸렸습니다.
DEADLINE_EXCEEDED

A deadline was exceeded on the server.

이 문제를 해결하려면 지연 시간 문제 해결 가이드를 참조하세요.

ABORTED

다음과 같은 경우 ABORTED 오류가 증가할 수 있습니다.

  • 단일 문서에 대한 초당 1단어 쓰기 제한을 초과합니다.
  • 겹쳐진 트랜잭션의 경합
  • 트래픽이 500-50-5 규칙을 초과하거나 핫 스팟이 발생하는 경우
ABORTED

Too much contention on these datastore entities. Please try again.

또는

ABORTED

Aborted due to cross-transaction contention. This occurs when multiple
transactions attempt to access the same data, requiring Firestore to abort at
least one in order to enforce serializability.

이 문제를 해결하려면 다음 단계를 따르세요.

  • 빠른 트래픽 증가를 위해 Firestore는 늘어난 수요를 충족시키기 위해 자동으로 확장을 시도합니다. Firestore가 확장되면 지연 시간 감소가 시작됩니다.
  • 핫 스팟은 Firestore에서 수직 확장 기능을 제한하며, 핫 스팟을 식별하기 위해 규모 확장을 위한 설계를 검토합니다.
  • 트랜잭션의 데이터 경합 및 트랜잭션 사용량을 검토합니다.
  • 개별 문서에 대한 쓰기 속도를 초당 한 번 미만으로 유지합니다.

RESOURCE_EXHAUSTED

다음과 같은 경우 RESOURCE_EXHAUSTED 오류가 발생할 수 있습니다.

  • 무료 계층 할당량이 초과되었고 프로젝트에 결제가 사용 설정되지 않았습니다.
  • 데이터베이스 간의 10,000회 쓰기 또는 10MiB/s 처리량 한도가 초과되었습니다.
RESOURCE_EXHAUSTED

Some resource has been exhausted, perhaps a per-user quota, or perhaps the entire file system is out of space.

이 문제를 해결하려면 다음 단계를 따르세요.

  • 무료 계층의 일일 재설정을 기다리거나 프로젝트 결제를 사용 설정합니다.
  • 사용량을 쓰기 데이터베이스 한도인 10,000개 미만으로 유지합니다.