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 の このプロパティが特定の仮想ホストに対して新しいタイムアウト値を使用して変更されると、その特定の仮想ホストを使用する API プロキシのみが影響を受けます。 |
conf_load_balancing_load.balancing.driver.proxy.read.timeout
|
ルーター |
接続を確立して Message Processor にリクエストを送信してから、Router が Message Processor からのレスポンスを受信するまで待機する最大時間を指定します。 このタイムアウト時間内に Message Processor からのレスポンスがない場合、Router はタイムアウトします。 このプロパティは、この Router 上のすべての仮想ホストで使用されます。 このプロパティのデフォルト値は 57 秒です。 このプロパティは、後述の Router の I/O タイムアウトの構成で説明されているように変更することも、仮想ホストレベルで このプロパティの時間間隔は、次の表記を使用して秒以外に設定できます。 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 があり、エラー発生時の再試行が有効になっている場合に該当します。値は次のいずれかになります。
|
始める前に
このドキュメントの手順を使用する前に、次のトピックを理解しておいてください。
- 仮想ホストのプロパティについてよくご存じない場合は、 仮想ホスト プロパティのリファレンスをご覧ください。
- Private Cloud 上の Edge のプロパティ構成に慣れていない場合は、Edge の構成方法をご覧ください。
- I/O タイムアウトを構成するためのベスト プラクティスの推奨事項に従っていることを確認します。
仮想ホストの I/O タイムアウトの構成
このセクションでは、組織と環境に関連付けられた仮想ホストで I/O タイムアウトを構成する方法について説明します。I/O タイムアウトは、proxy_read_timeout
プロパティを使用して仮想ホストで構成できます。このプロパティは、I/O タイムアウト値を秒単位で表します。
仮想ホストは次のいずれかの方法で構成できます。
- Edge UI
- Edge API
Edge UI
Edge UI を使用して仮想ホストを構成する手順は次のとおりです。
- Edge UI にログインします。
- [Admin] > [Virtual Hosts] に移動します。
- この変更を行う環境を選択します。
- 新しい I/O タイムアウト値を構成する特定の仮想ホストを選択します。
- [Properties] で、[Proxy Read Timeout] の値を秒単位で更新します。
たとえば、タイムアウトを 120 秒に変更する場合は、次の図のように「120」と入力します。
- 変更を保存します。
Edge API
Edge API を使用して仮想ホストを構成する手順は次のとおりです。
- 以下のように、
仮想ホスト取得 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 }
- プロパティ
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 }
- 更新した仮想ホストの構成をファイルに保存します。たとえば、
virtualhost-payload.json
です。 - 次のように
仮想ホストの更新 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 タイムアウトが正しく変更されていることを確認する方法について説明します。
-
仮想ホストの取得 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} は仮想ホストの名前です。
- プロパティ
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 秒が設定されています。 proxy_read_timeout,
の古い値が引き続き表示される場合は、仮想ホストでの I/O タイムアウトの構成で説明されているすべての手順を正しく完了していることを確認してください。見落とした手順がある場合は、すべての手順を正しく繰り返します。- それでも 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 タイムアウトを構成する手順は次のとおりです。
- Router マシンで、次のファイルをエディタで開きます。まだ存在しない場合は作成します。
/opt/apigee/customer/application/router.properties
たとえば、
vi
でファイルを開くには、次のコマンドを入力します。vi /opt/apigee/customer/application/router.properties
properties
ファイルに次の形式の行を追加します。time_in_seconds
は値に置き換えます。- 変更を保存します。
- 次のように、このプロパティ ファイルの所有者を
apigee
ユーザーにします。chown apigee:apigee /opt/apigee/customer/application/router.properties
- 次のように Router を再起動します。
/opt/apigee/apigee-service/bin/apigee-service edge-router restart
- Router が複数ある場合は、すべての Router で上記の手順を繰り返します。
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
Router の I/O タイムアウトを確認する
このセクションでは、Router で I/O タイムアウトが正しく変更されていることを確認する方法について説明します。
トークン conf_load_balancing_load.balancing.driver.proxy.read.timeout
を使用して Router の I/O タイムアウトを設定した場合でも、実際のプロパティ proxy_read_timeout
が新しい値で設定されていることを確認する必要があります。
/opt/nginx/conf.d
ディレクトリでproxy_read_timeout
プロパティを検索し、次のように新しい値が設定されているかどうかを確認します。grep -ri "proxy_read_timeout" /opt/nginx/conf.d
- ルーターで新しい 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;
上記の出力例では、デフォルト仮想ホストの構成ファイルである
0-default.conf
のプロパティproxy_read_timeout
に新しい値 120 が設定されています。これは、Router で I/O タイムアウトが 120 秒に正常に構成されていることを示します。 - プロパティ
proxy_read_timeout
に古い値が引き続き表示される場合は、Router で I/O タイムアウトを構成するに記載されているすべての手順を正しく完了していることを確認してください。見逃したステップがある場合は、すべてのステップを正しく繰り返します。 - それでも I/O タイムアウトを変更できない場合は、Apigee Edge サポートにお問い合わせください。