設定リクエストのタイムアウト

Cloud Run for Anthos サービスがリクエストに対するレスポンスを返すまでの許容時間を設定する方法について説明します。指定した時間内にレスポンスが返されない場合、リクエストが終了し、エラー 504 が返されます。

タイムアウト上限

最大タイムアウトの上限は、GKE クラスタのバージョンによって異なります。

GKE バージョン デフォルトの上限 最大タイムアウトの上限
0.16.0-gke.1 以降 300 秒 24 時間
0.15.0-gke.3 以前 300 秒 900 秒

Cloud Run for Anthos のリクエスト タイムアウトの変更に加えて、使用言語のフレームワークに更新が必要な独自のリクエスト タイムアウト設定があるかどうかも確認する必要があります。

リクエスト タイムアウトの設定と更新

構成を変更すると、新しいリビジョンが作成されます。明示的に更新しない限り、以降のリビジョンでも、この構成が自動的に設定されます。

新しいサービスをデプロイするか、既存のサービスを更新してリビジョンをデプロイする際に、Google Cloud コンソール、Google Cloud CLI、または YAML ファイルを使用してリクエスト タイムアウトを設定できます。

Console

  1. Google Cloud コンソールで Cloud Run for Anthos に移動します。

    Cloud Run for Anthos に移動

  2. デプロイ先の新しいサービスを構成する場合は、[サービスの作成] をクリックします。既存のサービスを構成する場合は、そのサービスをクリックし、[新しいリビジョンの編集とデプロイ] をクリックします。

  3. [詳細設定] で [コンテナ] をクリックします。

    画像

  4. [リクエストのタイムアウト] フィールドに、使用するタイムアウト値を入力します。指定する値は、クラスタの GKE バージョンのタイムアウト上限よりも小さい値にする必要があります。

  5. [次へ] をクリックして、次のセクションに進みます。

  6. [このサービスをトリガーする方法の構成] セクションで、サービスを呼び出すために使用する接続を選択します。

  7. [作成] をクリックしてイメージを Cloud Run for Anthos にデプロイし、デプロイの完了を待ちます。

コマンドライン

  • 既存のサービスの場合、--timeout パラメータを指定して gcloud run services update コマンドを実行することで、リクエストのタイムアウトを設定します。

    gcloud run services update SERVICE --timeout TIMEOUT

    以下のように置き換えます。

    • SERVICE は、実際のサービスの名前に置き換えます。
    • TIMEOUT は必要な時間で置き換えます。整数値(秒単位)を使用することも、期間を絶対値で指定することもできます。たとえば、1m20s は 1 分 20 秒を意味します。指定する値は、クラスタの GKE バージョンのタイムアウト上限よりも小さい値にする必要があります。タイムアウトをデフォルト値に設定するには、0 を指定します。
  • 新しいサービスの場合、--timeout パラメータを指定して gcloud run deploy コマンドを実行することで、リクエストのタイムアウトを設定します。

    gcloud run deploy SERVICE --image=IMAGE_URL --timeout TIMEOUT

    以下のように置き換えます。

    • SERVICE は、実際のサービスの名前に置き換えます。
    • IMAGE_URL は、コンテナ イメージへの参照(gcr.io/myproject/my-image:latest など)に置き換えます。
    • TIMEOUT は必要な時間で置き換えます。整数値(秒単位)を使用することも、期間を絶対値で指定することもできます。たとえば、1m20s は 1 分 20 秒を意味します。指定する値は、クラスタの GKE バージョンのタイムアウト上限よりも小さい値にする必要があります。タイムアウトをデフォルト値に設定するには、0 を指定します。

YAML

--format=export フラグを使用して、gcloud run services describe コマンドで既存のサービスの構成を YAML ファイルにダウンロードできます。次に YAML ファイルを変更し、gcloud beta run services replace コマンドを使用してこれらの変更をデプロイします。指定した属性のみを変更する必要があります。

  1. ローカル ワークスペースの service.yaml という名前のファイルにサービスの構成をダウンロードします。

    gcloud run services describe SERVICE --format export > service.yaml

    SERVICE は、Cloud Run for Anthos サービスの名前に置き換えます。

  2. ローカル ファイルで timeoutSeconds 属性を更新します。

    apiVersion: serving.knative.dev/v1
    kind: Service
    metadata:
      name: SERVICE
    spec:
      template:
        spec:
          containers:
          - image: IMAGE
          timeoutSeconds: TIMEOUT

    以下のように置き換えます。

    • SERVICE は、Cloud Run for Anthos サービスの名前に置き換えます。
    • IMAGE_URL は、コンテナ イメージへの参照(gcr.io/myproject/my-image:latest など)に置き換えます。
    • TIMEOUT は、必要なタイムアウト(秒単位)にします。
  3. 次のコマンドを使用して、サービスを新しい構成に置き換えます。

    gcloud beta run services replace service.yaml