ルーターの I/O タイムアウトを構成する

現在、Apigee Edge のドキュメントを表示しています。
Apigee X のドキュメントをご確認ください
情報

このドキュメントでは、Apigee Edge の Router で I/O タイムアウトを構成する方法について説明します。

Router の I/O タイムアウトは、接続を確立して Message Processor にリクエストを送信してから、Router が Message Processor からのレスポンスを受信するまで待機する時間を表します。Router の I/O タイムアウトのデフォルト値は 57 秒です。

Router の I/O タイムアウトは、必要に応じてデフォルト値の 57 秒から増減できます。次のように構成できます。

  • 仮想ホスト
  • ルーターでの操作

次のプロパティは、Router の I/O タイムアウトを制御します。

プロパティ名 ロケーション 説明
proxy_read_timeout 仮想ホスト

接続が確立して Message Processor にリクエストを送信してから、Router が Message Processor からのレスポンスを受信するまで待機する最大時間を指定します。

このタイムアウト期間内に Message Processor からのレスポンスがない場合、Router はタイムアウトします。

デフォルトでは、このプロパティは Router の conf_load_balancing_load.balancing.driver.proxy.read.timeout プロパティに設定されている値を使用します。デフォルト値は 57 秒です。

このプロパティを特定の仮想ホストの新しいタイムアウト値で変更すると、その特定の仮想ホストを使用する API プロキシのみが影響を受けます。

conf_load_balancing_load.balancing.driver.proxy.read.timeout ルーター

接続が確立して Message Processor にリクエストを送信してから、Router が Message Processor からのレスポンスを受信するまで待機する最大時間を指定します。

このタイムアウト期間内に Message Processor からのレスポンスがない場合、Router はタイムアウトします。

このプロパティは、この Router 上のすべての仮想ホストで使用されます。

このプロパティのデフォルト値は 57 秒です。

このプロパティは、以下の Router の I/O タイムアウトの構成で説明されているように変更することも、仮想ホストレベルで proxy_read_timeout プロパティを設定してこの値を上書きすることもできます。

このプロパティの期間を秒以外の値で設定するには、次の表記法を使用します。

ms: milliseconds
s:  seconds (default)
m:  minutes
h:  hours
d:  days
w:  weeks
M:  months (length of 30 days)
y:  years (length of 365 days)
conf_load_balancing_load.balancing.driver.nginx.upstream_next_timeout ルーター

接続が確立して各 Message Processor にリクエストを送信してから、Router がすべての Message Processor からのレスポンスを受信するまで待機する合計時間を指定します。

これは、Edge インストール環境に複数の Message Processor があり、エラー発生時の再試行が有効になっている場合に有効です。値は次のいずれかになります。

  • conf_load_balancing_load.balancing.driver.proxy.read.timeout の現在の値
  • デフォルト値の 57 秒

conf_load_balancing_load.balancing.driver.proxy.read.timeout プロパティと同様に、デフォルト(秒)以外の時間間隔も指定できます。

始める前に

このドキュメントの手順を行う前に、次のトピックを理解しておいてください。

仮想ホストの I/O タイムアウトの構成

このセクションでは、組織と環境に関連付けられた仮想ホストで I/O タイムアウトを構成する方法について説明します。I/O タイムアウトは、I/O タイムアウト値を秒単位で表す proxy_read_timeout プロパティを使用して、仮想ホストで構成できます。

仮想ホストは、次のいずれかの方法で構成できます。

  • Edge UI
  • Edge API

Edge UI

Edge UI を使用して仮想ホストを構成する手順は次のとおりです。

  1. Edge UI にログインします。
  2. [管理] > [仮想ホスト] に移動します。
  3. この変更を行う特定の環境を選択します。
  4. 新しい I/O タイムアウト値を構成する仮想ホストを選択します。
  5. [Properties] で、[Proxy Read Timeout] の値を秒単位で更新します。

    たとえば、タイムアウトを 120 秒に変更する場合は、次の図のように「120」と入力します。

    プロキシ読み取りタイムアウト値 120

  6. 変更を保存します。

Edge API

Edge API を使用して仮想ホストを構成する手順は次のとおりです。

  1. 次のように Get Virtual host API を使用して現在の仮想ホストの構成を取得します。

    Public Cloud ユーザー

    curl -v -X GET https//api.enterprise.apigee.com/v1/organizations/{organization-name}/environments/{environment-name}/virtualhosts/{virtualhost-name} -u <username>
                    

    Private Cloud ユーザー

    curl -v -X GET http://<management-host>:<port #>/v1/organizations/{organization-name}/environments/{environment-name}/virtualhosts/{virtualhost-name} -u <username>
                    

    ここで

    {organization-name} は組織の名前です。

    {environment-name} は環境の名前です。

    {virtualhost-name} は、仮想ホストの名前です。

    仮想ホスト構成の例

        {
          "hostAliases": [
            "api.myCompany,com"
          ],
          "interfaces": [],
          "listenOptions": [],
          "name": "secure",
          "port": "443",
          "retryOptions": [],
          "sSLInfo": {
            "ciphers": [],
            "clientAuthEnabled": "false",
            "enabled": "true",
            "ignoreValidationErrors": false,
            "keyAlias": "myCompanyKeyAlias",
            "keyStore": "ref://myCompanyKeystoreref",
            "protocols": []
          },
          "useBuiltInFreeTrialCert": false
        }
    
  2. プロパティ proxy_read_timeout を、properties の下の既存の仮想ホスト構成 JSON ペイロードに秒単位で追加します。

    たとえば、I/O タイムアウトを 120 秒に変更するには、次のように properties コードブロックを追加します。

    更新された仮想ホストの構成の例

    {
      "hostAliases": [
        "api.myCompany,com",
      ],
      "interfaces": [],
      "listenOptions": [],
      "name": "secure",
      "port": "443",
      "retryOptions": [],
      "properties": {
        "property": [
          {
            "name": "proxy_read_timeout",
            "value": "120"
          }
        ]
      },
      "sSLInfo": {
        "ciphers": [],
        "clientAuthEnabled": "false",
        "enabled": "true",
        "ignoreValidationErrors": false,
        "keyAlias": "myCompanyKeyAlias",
        "keyStore": "ref://myCompanyKeystoreref",
        "protocols": []
      },
      "useBuiltInFreeTrialCert": false
    }
    
  3. 更新した仮想ホストの構成をファイルに保存します。たとえば、virtualhost-payload.json です。
  4. 次のように 仮想ホストの更新 API を使用して、virtualhost 構成を更新し、変更を反映します。

    Public Cloud ユーザー

    curl -v -X POST Content-Type: application/json
    https://api.enterprise.apigee.com/v1/organizations/{organization-name}/environments/{environment-name}/virtualhosts/{virtualhost-name} -d @virtualhost-payload.json -u <username>
                

    Private Cloud ユーザー

    curl -v -X POST Content-Type: application/json
    http://<management-host>:<port #>/v1/organizations/{organization-name}/environments/{environment-name}/virtualhosts/{virtualhost-name} -d @virtualhost-payload.json -u <username>
                

    ここで

    {organization-name} は組織の名前です。

    {environment-name} は環境の名前です。

    {virtualhost-name} は、仮想ホストの名前です。

仮想ホストの I/O タイムアウトの確認

このセクションでは、Edge API を使用して、仮想ホストの I/O タイムアウトが正常に変更されていることを確認する方法について説明します。

  1. 仮想ホストの取得 API を実行して、次のように virtualhost 構成を取得します。

    Public Cloud ユーザー

    curl -v -X GET https://api.enterprise.apigee.com/v1/organizations/{organization-name}/environments/{environment-name}/virtualhosts/{virtualhost-name} -u <username>
                  

    Private Cloud ユーザー

    curl -v -X GET http://<management server-host>:<port #>/v1/organizations/{organization-name}/environments/{environment-name}/virtualhosts/{virtualhost-name} -u <username>
                  

    ここで

    {organization-name} は組織の名前です。

    {environment-name} は環境の名前です。

    {virtualhost-name} は、仮想ホストの名前です。

  2. プロパティ proxy_read_timeout が新しい値に設定されていることを確認します。

    更新された仮想ホストの構成の例

    {
      "hostAliases": [
        "api.myCompany,com",
      ],
      "interfaces": [],
      "listenOptions": [],
      "name": "secure",
      "port": "443",
      "retryOptions": [],
      "properties": {
        "property": [
          {
            "name": "proxy_read_timeout",
            "value": "120"
          }
        ]
      },
      "sSLInfo": {
        "ciphers": [],
        "clientAuthEnabled": "false",
        "enabled": "true",
        "ignoreValidationErrors": false,
        "keyAlias": "myCompanyKeyAlias",
        "keyStore": "ref://myCompanyKeystoreref",
        "protocols": []
      },
      "useBuiltInFreeTrialCert": false
    }
    

    上記の例では、proxy_read_timeout に新しい値 120 秒が設定されています。

  3. proxy_read_timeout, が引き続き古い値が表示される場合は、仮想ホストでの I/O タイムアウトの構成に記載されているすべての手順に正しく従っていることを確認します。ステップを見逃した場合は、すべてのステップをもう一度正しくやり直します。
  4. それでも I/O タイムアウトを変更できない場合は、Apigee Edge サポートにお問い合わせください。

Router の I/O タイムアウトを構成する

このセクションでは、Router で I/O タイムアウトを構成する方法について説明します。I/O タイムアウトは、I/O タイムアウト値を秒単位で表す Router プロパティ conf_load_balancing_load.balancing.driver.proxy.read.timeout を使用して構成できます。

Router で I/O タイムアウトを構成する手順は次のとおりです。

  1. Router マシンで、次のファイルをエディタで開きます。まだ存在しない場合は作成します。
    /opt/apigee/customer/application/router.properties
    

    たとえば、vi でファイルを開くには、次のコマンドを入力します。

    vi /opt/apigee/customer/application/router.properties
    
  2. properties ファイルに次の形式の行を追加します。time_in_seconds は実際の値に置き換えます。
  3. conf_load_balancing_load.balancing.driver.proxy.read.timeout=time_in_seconds
    

    たとえば、Router の I/O タイムアウトを 120 秒に変更するには、次の行を追加します。

    conf_load_balancing_load.balancing.driver.proxy.read.timeout=120
    

    I/O タイムアウトは分単位で変更することもできます。たとえば、タイムアウトを 2 分に変更するには、次の行を追加します。

    conf_load_balancing_load.balancing.driver.proxy.read.timeout=2m
    
  4. 変更を保存します。
  5. 以下に示すように、このプロパティ ファイルの所有者を apigee ユーザーに設定します。
    chown apigee:apigee /opt/apigee/customer/application/router.properties
    
  6. 次のように Router を再起動します。
    /opt/apigee/apigee-service/bin/apigee-service edge-router restart
    
  7. Router が複数ある場合は、すべての Router で上記の手順を繰り返します。

Router の I/O タイムアウトを確認する

このセクションでは、Router で I/O タイムアウトが正常に変更されていることを確認する方法について説明します。

トークン conf_load_balancing_load.balancing.driver.proxy.read.timeout を使用して Router の I/O タイムアウトを設定する場合でも、実際のプロパティ proxy_read_timeout が新しい値で設定されていることを確認する必要があります。

  1. /opt/nginx/conf.d ディレクトリで proxy_read_timeout プロパティを検索し、次のように新しい値が設定されているかどうかを確認します。
    grep -ri "proxy_read_timeout" /opt/nginx/conf.d
    
  2. 新しい I/O タイムアウト値がルーターで正常に設定されている場合、上記のコマンドによってすべての仮想ホスト構成ファイルに新しい値が表示されます。

    I/O タイムアウトが 120 秒の場合の上記の grep コマンドの結果の例を次に示します。

    /opt/nginx/conf.d/0-default.conf:proxy_read_timeout 120;
    /opt/nginx/conf.d/0-edge-health.conf:proxy_read_timeout 1s;
    

    上記の出力例では、プロパティ proxy_read_timeout に、デフォルトの仮想ホストの構成ファイルである 0-default.conf に新しい値 120 が設定されています。これは、Router で I/O タイムアウトが 120 秒に正常に構成されていることを示します。

  3. プロパティ proxy_read_timeout に古い値が引き続き表示される場合は、Router の I/O タイムアウトの構成で説明されているすべての手順が正しく行われていることを確認します。失敗した手順がある場合は、すべての手順を正しくやり直してください。
  4. それでも I/O タイムアウトを変更できない場合は、Apigee Edge サポートにお問い合わせください。

次のステップ

Message Processor の I/O タイムアウトを構成するについて学習する