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

ここに表示されているのは Apigee Edge のドキュメントです。
Go to the Apigee X のドキュメントに移動します
info

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

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

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

  • 仮想ホスト
  • Router

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 Router

接続を確立してリクエストを 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 Router

接続を確立して各 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 タイムアウトは、仮想ホストで プロパティ proxy_read_timeout を使用して構成できます。これは、I/O タイムアウト値を秒単位で表します。

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

  • Edge UI
  • Edge API

Edge UI

Edge UI を使用して仮想ホストを構成するには、次の操作を行います。

  1. Edge UI にログインします。
  2. [Admin] > [Virtual Hosts] に移動します。
  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 を、既存の仮想ホスト構成 JSON ペイロードの properties に秒単位の値で追加します。

    たとえば、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. Update a virtual host 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. Get virtual host 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 タイムアウトは、Router プロパティ conf_load_balancing_load.balancing.driver.proxy.read.timeout を使用して構成できます。これは、I/O タイムアウト値を秒単位で表します。

Router で I/O タイムアウトを構成するには、次の操作を行います。

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

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

    vi /opt/apigee/customer/application/router.properties
  2. properties ファイルに次の形式で 1 行を追加し、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 タイムアウト値が Router に正常に設定されると、上記のコマンド はすべての仮想ホスト構成ファイルに新しい値を表示します。

    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;

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

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

次のステップ

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