現在、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 タイムアウトは、I/O タイムアウト値を秒単位で表す proxy_read_timeout
プロパティを使用して、仮想ホストで構成できます。
仮想ホストは、次のいずれかの方法で構成できます。
- Edge UI
- Edge API
Edge UI
Edge UI を使用して仮想ホストを構成する手順は次のとおりです。
- Edge UI にログインします。
- [管理] > [仮想ホスト] に移動します。
- この変更を行う特定の環境を選択します。
- 新しい I/O タイムアウト値を構成する仮想ホストを選択します。
- [Properties] で、[Proxy Read Timeout] の値を秒単位で更新します。
たとえば、タイムアウトを 120 秒に変更する場合は、次の図のように「120」と入力します。
- 変更を保存します。
Edge API
Edge API を使用して仮想ホストを構成する手順は次のとおりです。
- 次のように
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 }
- プロパティ
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;
上記の出力例では、プロパティ
proxy_read_timeout
に、デフォルトの仮想ホストの構成ファイルである0-default.conf
に新しい値 120 が設定されています。これは、Router で I/O タイムアウトが 120 秒に正常に構成されていることを示します。 - プロパティ
proxy_read_timeout
に古い値が引き続き表示される場合は、Router の I/O タイムアウトの構成で説明されているすべての手順が正しく行われていることを確認します。失敗した手順がある場合は、すべての手順を正しくやり直してください。 - それでも I/O タイムアウトを変更できない場合は、Apigee Edge サポートにお問い合わせください。