ここに表示されているのは 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 の
特定の仮想ホストの新しいタイムアウト値でこのプロパティを変更すると、 その特定の仮想ホストを使用する API プロキシのみが影響を受けます。 |
conf_load_balancing_load.balancing.driver.proxy.read.timeout
|
Router |
接続を確立してリクエストを 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
|
Router |
接続を確立して各 Message Processor にリクエストを送信した後、Router がすべての Message Processor からレスポンスを受信するまで待機する合計時間を指定します。 これは、Edge インストール環境に複数の Message Processor があり、 エラー発生時に再試行が有効になっている場合に適用されます。次のいずれかの値になります。
|
始める前に
このドキュメントの手順を行う前に、次のトピックを理解しておいてください。
- 仮想ホストのプロパティに慣れていない場合は、 仮想ホストのプロパティ リファレンスをご覧ください。
- Edge for Private Cloud のプロパティの構成に慣れていない場合は、 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 を使用して仮想ホストを構成するには、次の操作を行います。
- 次の例に示すように、
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を、既存の仮想ホスト構成 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 } - 更新した仮想ホスト構成をファイルに保存します。例:
virtualhost-payload.json. -
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 タイムアウトが正常に変更されたことを確認する方法について説明します。
-
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} は仮想ホストの名前です
- プロパティ
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 タイムアウトは、Router プロパティ conf_load_balancing_load.balancing.driver.proxy.read.timeout を使用して構成できます。これは、I/O タイムアウト値を秒単位で表します。
Router で I/O タイムアウトを構成するには、次の操作を行います。
- Router マシンで、エディタで次のファイルを開きます。まだ存在しない場合は、作成します。
/opt/apigee/customer/application/router.properties
たとえば、
viでファイルを開くには、次のコマンドを入力します。vi /opt/apigee/customer/application/router.properties
propertiesファイルに次の形式で 1 行を追加し、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 タイムアウト値が 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 秒に正常に構成されていることを示します。 - プロパティ
proxy_read_timeoutの古い値が表示される場合は、 Router で I/O タイムアウトを構成するで説明されているすべての手順を正しく行っていることを確認します。手順が抜けている場合は、 すべての手順をもう一度正しく繰り返します。 - I/O タイムアウトを変更できない場合は、Apigee Edge サポートにお問い合わせください。