Pub/Sub 할당량 및 한도

Google Cloud는 할당량을 사용해서 사용 가능한 특정 공유 Google Cloud 리소스의 양을 제한합니다. 각 할당량은 특정 서비스에 대한 API 호출, 특정 서비스로 전송되는 바이트 수, 프로젝트에서 동시에 사용하는 스트리밍 연결 수와 같이 계수할 수 있는 특정 리소스를 나타냅니다.

또한 많은 서비스에는 할당량 시스템과 관련 없는 한도가 적용됩니다. 이것들은 프로젝트에서 만들 수 있고 늘리거나 줄일 수는 없는 Pub/Sub 리소스의 최대 메시지 크기 또는 개수와 같은 고정된 제약조건입니다.

할당량 보기 및 관리

특정 프로젝트의 경우 IAM 및 관리자 할당량 대시보드를 사용하여 현재 할당량 한도를 볼 수 있습니다. 또한 이 대시보드를 사용하여 다음을 수행할 수 있습니다.

  • 할당량 한도 줄이기
  • 할당량 한도 상향을 신청하는 프로세스 시작

할당량 사용량의 모니터링 및 알림에 대한 상세 설명은 모니터링을 참조하세요.

할당량 사용 기여 분석

푸시 구독자 처리량의 경우 푸시 구독을 포함하는 프로젝트에 대해 할당량 사용량이 부과됩니다. 구독 이름에 표시되는 프로젝트입니다.

다른 모든 할당량의 경우 요청에 지정된 사용자 인증 정보에 연결된 프로젝트에 따라 사용 요금이 부과됩니다. 할당량 사용 요금은 요청된 리소스를 포함하는 프로젝트에 따라 부과되지 않습니다.

예를 들어 프로젝트 A의 서비스 계정이 프로젝트 B의 주제에 게시 요청을 보내는 경우 프로젝트 A에 할당량 요금이 부과됩니다. 경우에 따라 사용자는 다른 프로젝트에 할당량 사용 요금이 부과되기를 원할 수 있습니다. X-Goog-User-Project 시스템 매개변수를 사용하여 할당량 기여 분석을 위한 프로젝트를 변경하세요. X-Goog-User-Project에 대한 상세 설명은 시스템 매개변수를 참조하세요.

gcloud CLI를 사용해서 특정 요청의 할당량 기여 분석에 대해 프로젝트를 설정할 수 있습니다. gcloud CLI는 X-Goog-User-Project 요청 헤더를 전송합니다.

사용자는 할당량 기여 분석에 사용할 프로젝트에 대한 serviceusage.services.use 권한이 있는 roles/serviceusage.serviceUsageConsumer 역할 또는 커스텀 역할이 있어야 합니다.

다음 예시는 QUOTA_PROJECT에 대하여 관리자 작업 할당량을 충전하는 동안 프로젝트 RESOURCE_PROJECT의 구독 목록을 가져오는 방법을 보여줍니다. Google Cloud CLI 터미널에서 다음 명령어를 실행하세요.

gcloud pubsub subscriptions list --project=
RESOURCE_PROJECT --billing-project=
QUOTA_PROJECT

QUOTA_PROJECT를 할당량 요금을 부과하려는 Google Cloud 프로젝트의 ID로 바꿉니다.

Pub/Sub에서 청구 프로젝트는 항상 리소스를 포함하는 프로젝트입니다. 할당량 기여 분석을 위해서만 프로젝트를 변경할 수 있습니다.

Pub/Sub 할당량

다음 표에 나열된 할당량은 API 및 서비스 할당량 대시보드에서 프로젝트별로 보거나 편집할 수 있습니다.

리전별 할당량은 3가지 유형으로 구분됩니다.

  • 대규모 리전: europe-west1, europe-west4, us-central1, us-east1, us-east4, us-west1, us-west2
  • 중간 규모 리전: asia-east1, asia-northeast1, asia-southeast1, europe-west2, europe-west3
  • 소규모 리전: 기타 모든 리전

1회만 전송 할당량은 리전별로 다릅니다. 다음 표에서 각 리전의 세부정보를 확인하세요.

할당량 기본 할당량 한도 설명
리전별 게시자 처리량
  • 대규모 리전에서 분당 240,000,000KB(4GB/초)
  • 중간 규모 리전에서 분당 48,000,000KB(800MB/초)
  • 소규모 리전에서 분당 12,000,000KB(200MB/초)

pubsub.googleapis.com/regionalpublisher

할당량 사용량은 게시된 PubsubMessage의 크기를 기준으로 합니다.

게시 요청 하나에 여러 메시지를 포함할 수 있으며 메시지당 추가 할당량이 부과되지 않습니다.

리전별 풀 구독자 처리량
  • 대규모 리전에서 분당 240,000,000KB(4GB/초)
  • 중간 규모 리전에서 분당 48,000,000KB(800MB/초)
  • 소규모 리전에서 분당 24,000,000KB(400MB/초)

pubsub.googleapis.com/regionalsubscriber

할당량 사용량은 반환된 PubsubMessage의 크기를 기준으로 합니다.

리전별 확인자 처리량
  • 대규모 리전에서 분당 240,000,000KB(4GB/초)
  • 중간 규모 리전에서 분당 48,000,000KB(800MB/초)
  • 소규모 리전에서 분당 24,000,000KB(400MB/초)

pubsub.googleapis.com/regionalacknowledger

할당량 사용량은 Acknowledge의 크기와 ModifyAckDeadline 요청을 기준으로 합니다.

리전별 푸시 및 내보내기 구독자 처리량
  • 대규모 리전에서 분당 26,400,000KB(440MB/초)
  • 중간 규모 리전에서 분당 8,400,000KB(140MB/초)
  • 소규모 리전에서 분당 2,400,000KB(40MB/초)

pubsub.googleapis.com/regionalpushsubscriber

푸시 엔드포인트에 대한 푸시 전달 요청의 할당량 사용량은 푸시 엔드포인트에 전송된 PubsubMessage의 크기를 기준으로 합니다.

리전별 StreamingPull 구독자 처리량
  • 대규모 리전에서 분당 240,000,000KB(4GB/초)
  • 중간 규모 리전에서 분당 48,000,000KB(800MB/초)
  • 소규모 리전에서 분당 24,000,000KB(400MB/초)

pubsub.googleapis.com/regionalstreamingpullsubscriber

할당량 사용량은 구독자에 스트리밍된 PubsubMessage의 크기를 기준으로 합니다.

가능한 경우 클라이언트 라이브러리는 StreamingPull 작업을 사용합니다.

리전당 열려 있는 StreamingPull 연결 수
  • 대규모 리전에서 한 번에 열려 있는 연결 72,000개
  • 중간 규모 리전에서 한 번에 열려 있는 연결 48,000개
  • 소규모 리전에서 한 번에 열려 있는 연결 24,000개

pubsub.googleapis.com/regionalstreamingpullconnections

특정 시간에 열려 있는 StreamingPull 연결 수입니다. StreamingPull을 참조하세요.

관리자 작업 분당 6,000(작업 100회/초)

pubsub.googleapis.com/administrator

GetTopicRequest와 같은 각 관리자 작업은 이 할당량에 대해 하나씩 청구됩니다.

Get*, List*, Create*, Delete*, Update*, ModifyPushConfig, SetIamPolicy, GetIamPolicy, TestIamPermissions, ValidateSchema, ValidateMessage,CommitSchema,RollbackSchema, DeleteSchemaRevision, ListSchemaRevisions, DetachSubscription은 관리자 작업입니다.

리전별로 1회만 전송이 사용 설정된 구독에서 소비되는 메시지 수
  • us-central1의 분당 1,000,000개 메시지
  • us-east1의 분당 700,000개 메시지
  • us-west1의 분당 300,000개 메시지
  • 다른 리전의 분당 180,000개 메시지

pubsub.googleapis.com/exactlyoncedeliveredmessagecount

할당량 사용은 구독자가 소비하는 PubsubMessage 수를 기준으로 합니다.

리전별로 1회만 전송이 사용 설정된 구독을 사용할 때 확인된 메시지 또는 기한이 연장된 메시지 수
  • us-central1의 분당 10,000,000개 메시지
  • us-east1의 분당 7,000,000개 메시지
  • us-west1의 분당 3,000,000개 메시지
  • 다른 리전의 분당 1,800,000개 메시지

pubsub.googleapis.com/exactlyonceackcount

할당량 사용은 AcknowledgeModifyAckDeadline 요청에서 확인 ID 수를 기준으로 합니다.

처리량 할당량 단위

처리량 할당량 사용량은 1KB 단위로 측정됩니다. 1KB는 1,000바이트입니다. 예를 들어 각각 50바이트인 메시지 105개를 포함한 PublishRequest의 경우 사용자 데이터 크기가 105 * 50 bytes = 5250 bytes이므로 할당량 사용량은 max(1kB, ceil(5250 bytes/1000)) = 6kB입니다.

리소스 한도

리소스 한도
프로젝트 주제 10,000개
연결되거나 분리된 구독 10,000개
스냅샷 5,000개
스키마 10,000개
주제 연결된 구독 10,000개
연결된 스냅샷 5,000개
주제 메시지 보관이 구성된 경우 주제에 게시된 메시지는 게시 시점으로부터 최대 31일 동안 영구 스토리지에 보관할 수 있습니다.
구독 기본적으로 미확인 메시지는 게시 시점으로부터 7일 동안 영구 스토리지에 보관합니다. 보관된 메시지 에는 제한이 없습니다.
구독자가 구독을 사용하지 않으면 구독이 만료됩니다. 기본 만료 기간은 31일입니다.
스키마 스키마 크기(definition 필드): 50KB
스키마당 버전: 20개
게시 요청 10MB(총 크기)
메시지 1,000개
메시지 메시지 크기(data 필드): 10MB
메시지당 속성: 100개
속성 키 크기: 256바이트
속성 값 크기: 1,024바이트
StreamingPull 스트림 오픈 스트림당 10MB/초
단항 Pull 응답 Pull 응답의 최대 메시지 수: 1,000
Pull 응답의 최대 크기: 10MB
Pull/StreamingPull 메시지 서비스는 연결당 미해결 StreamingPull 메시지의 총 숫자를 제한할 수 있습니다. 이 제한에 도달할 경우, 메시지 확인 속도와 사용하는 연결의 수를 늘리세요.
확인 및 ModifyAckDeadline 요청 512KB(총 크기)
순서 키 메시지에 순서 키가 있으면 각 순서 키의 최대 게시자 처리량은 1MBps입니다.

할당량 증가를 위해 서비스 계정 사용

일반 사용자 계정(비 서비스 계정)으로 Google Cloud CLI gcloud 도구를 사용할 경우 Pub/Sub 작업이 수동 작업에 적합한 속도로 제한됩니다. 속도가 이 제한을 초과하면 RESOURCE_EXHAUSTED 오류가 발생합니다. 이 문제를 해결하려면 서비스 계정의 사용자 인증 정보를 사용해야 합니다. 자동화를 위해 gcloud CLI에서 사용자 인증 정보를 사용하려면 Pub/Sub 작업에 대한 서비스 계정을 활성화하세요.

위치 엔드포인트를 사용하여 요청 라우팅

특정 리전에 추가 할당량이 있는 경우 위치별 Pub/Sub 엔드포인트를 사용하여 해당 리전으로 요청을 라우팅할 수 있습니다. 메시지를 전역 엔드포인트에 게시하면 Pub/Sub 서비스가 할당량이 충분하지 않은 리전으로 트래픽을 라우팅할 수 있습니다.

할당량 불일치

할당량 불일치는 게시되거나 수신한 메시지가 1,000바이트보다 작을 때 발생할 수 있습니다. 예를 들면 다음과 같습니다.

  • 500바이트 메시지 10개를 개별 요청으로 게시하면 게시자 할당량 사용량이 10,000바이트가 됩니다. 그 이유는 1,000바이트 미만의 메시지는 자동으로 1,000바이트로 올림되기 때문입니다.

  • 이 10개의 메시지를 단일 pull 응답으로 수신한 경우, 구독자 할당량 사용량은 단 5KB가 되는데 이는 각 메시지의 실제 크기를 합산하여 전체 할당량을 결정하기 때문입니다.

  • 반대의 경우도 마찬가지입니다. 단일 게시 요청으로 여러 메시지를 게시하거나 개별 pull 요청으로 메시지를 수신하는 경우 구독자 할당량 사용량이 게시자 할당량 사용량보다 클 수 있습니다.