このページでは、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 サブスクリプションの問題が解決しない場合は、サポートの利用をご覧ください。