このページでは、Cloud Storage サブスクリプションに関する一般的なトラブルシューティングのヒントをいくつか説明します。
Cloud Storage サブスクリプションの状態を確認する
サブスクリプションの状態を確認する手順は次のとおりです。
コンソールで、Pub/Sub サブスクリプション ページに移動します。 Google Cloud
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 サブスクリプションに問題がまだある場合は、サポートの利用をご覧ください。