このページでは、Cloud Storage サブスクリプションに関する一般的なトラブルシューティングのヒントを示します。
Cloud Storage サブスクリプションの状態を確認する
サブスクリプションの状態を確認するには、次の手順を行います。
Google Cloud コンソールで、Pub/Sub サブスクリプション ページに移動します。
Cloud Storage サブスクリプションの [状態] のアイコンを確認します。
アイコンが緑色のチェックマークの場合、サブスクリプションは正常です。
アイコンが赤色の感嘆符の場合は、サブスクリプションがエラー状態です。
[Cloud Storage サブスクリプション] をクリックします。
[サブスクリプションの詳細] ページが開きます。
[サブスクリプションの状態] でエラー メッセージを確認します。
エラー メッセージに応じて、このページの関連するセクションに移動して問題のトラブルシューティングを行ってください。
この問題が解決すると、サブスクリプションは最終的に正常な状態に戻ります。
サブスクリプションを作成または更新できない
Cloud Storage サブスクリプションの作成または更新で発生する可能性のある一般的な問題の一部を以下にご紹介します。
バケットが見つからないエラー
サブスクリプションの作成または更新ワークフローで指定したバケットが存在しない場合、ワークフローは bucket not found
エラーを返します。
Google Cloud コンソールでは、メッセージは次のようになります。
The Cloud Storage bucket specified cannot be found.
この問題を解決するには、バケットを作成するか、既存のバケットを使用するように Cloud Storage サブスクリプションを更新します。
サービス アカウント エラー
Pub/Sub サービス アカウントに適切な権限が構成されていない場合、サブスクリプションの作成または更新ワークフローによってエラーが返されます。 Google Cloud コンソールでは、メッセージは次のようになります。
Cloud Pub/Sub did not have the necessary permissions configured to access
the provided bucket my-bucket (or the bucket may not exist).
Please verify that the service account
service-112233445566@gcp-sa-pubsub.iam.gserviceaccount.com
was granted the Storage Legacy Bucket Reader and Storage Object Creator
roles for the provided bucket.
この問題を解決するには、サービス アカウントに正しい権限が付与されているかどうかを確認します。
サブスクリプションの状態に赤い感嘆符が表示される
サブスクリプションを作成した後にバケットを編集すると、Pub/Sub がバケットにメッセージを書き込む方法に影響する可能性があります。変更によって問題が発生した場合、サブスクリプションの状態フィールドはエラー状態に設定されます。
サブスクリプションの詳細ページで、フィールド Subscription state
の状態を確認します。Subscription state
フィールドには、より具体的なエラーが含まれます。エラーは次のいずれかです。
バケットが見つからない: バケットが削除されました。 バケットを再度作成するか、既存のバケットを使用するようにサブスクリプションを更新します。
バケットの権限が拒否された: Pub/Sub サービス アカウントには、バケットへの書き込み権限がなくなりました。サービス アカウントに正しい権限が付与されているかどうかを確認します。
Pub/Sub サブスクリプションがエラー状態の場合、メッセージはバケットに書き込まれず、サブスクリプションのバックログに残ります。構成されている場合、アタッチされたデッドレター トピックにはメッセージが配信されないことに注意してください。未確認メッセージは、message_retention_duration
で設定された期間(デフォルトでは 7 日間)保持されます。
サブスクリプションでメッセージの処理が非常に遅い
サブスクリプション設定によっては、メッセージの処理が遅くなる可能性があります。
たとえば、Cloud Storage サブスクリプションでメッセージの順序指定を有効にすると、メッセージが Cloud Storage に書き込まれますが、同じ順序指定キーが含まれる後続のメッセージを遅延させるためにファイナライズされません。 パフォーマンスを向上させるには、メッセージの公開時により幅広い順序付けキーを使用するか、ユースケースでメッセージの順序付けが不要な場合は無効にすることを検討してください。
Cloud Storage サブスクリプションの最大ファイルサイズを低く設定しすぎると、パフォーマンスに悪影響が及ぶ可能性があります。最大ファイルサイズが小さすぎると、Pub/Sub で多数の Cloud Storage オブジェクトが作成され、各オブジェクト内に少数のメッセージしか作成されない場合があります。オブジェクトの作成とファイナライズのオーバーヘッドが発生すると、メッセージ処理が遅くなります。 パフォーマンスを向上させるには、Cloud Storage サブスクリプションの最大ファイルサイズの設定を増やすか、ファイルサイズの制限を削除することを検討してください。
割り当ての制限事項
または、プロジェクトが Pub/Sub の push スループットの割り当てに達した可能性があります(pubsub.googleapis.com/regionalpushsubscriber
)。割り当て制限が発生しているかどうかを確認するには、push リクエスト指標(subscription/push_request_count
)に resource_exhausted
エラーがないか確認します。
プロジェクトの割り当てを確認し、十分な割り当てが残っていることを確認します。Pub/Sub サブスクリプションを含むプロジェクト内の [IAM と管理] > [割り当て] に移動します。pubsub.googleapis.com/regionalpushsubscriber
割り当てを検索します。割り当て上限に達した場合は、割り当ての増加をリクエストできます。
サブスクリプションで想定よりも多くのファイルが作成される
スケーラビリティを高めるために、Cloud Storage サブスクリプションが複数の Pub/Sub バックエンドで処理される場合があります。各バックエンドは別々の Cloud Storage ファイルに書き込むため、特に低スループットのワークロードでは、Cloud Storage が予想よりも多くのファイルを作成する場合があります。
これは正常な現象です。サブスクリプションによって作成されるファイルの数を減らす場合は、サブスクリプションのファイル バッチ処理設定を増やして、より大きなファイルを許可することを検討してください。ファイルの後処理を行って、少数の大きなファイルに合成することもできます。
次のステップ
- Cloud Storage サブスクリプションに関する問題が解決しない場合は、サポートの利用をご覧ください。