您目前查看的是 Apigee Edge 說明文件。
前往 Apigee X 說明文件。 info
本文說明如何在 Apigee Edge 的路由器上設定 I/O 超時。
路由器上的 I/O 逾時代表路由器在建立連線並將要求傳送至訊息處理器後,等待接收訊息處理器回應的時間。Router 的預設 I/O 逾時值為 57 秒。
您可以視需求,將 Router 的 I/O 超時時間調高或調低,預設值為 57 秒。設定方式如下:
- 在虛擬主機中
- 在路由器上
下列屬性可控制路由器上的 I/O 逾時:
| 資源名稱 | 位置 | 說明 |
|---|---|---|
proxy_read_timeout
|
虛擬主機 |
指定路由器在建立連線並將要求傳送至訊息處理器後,等待訊息處理器回應的最長時間。 如果在逾時期間內,訊息處理器沒有回應,路由器就會逾時。 根據預設,這項屬性會採用在 Router 上為 如果為特定虛擬主機修改這個屬性,並設定新的逾時值,則只有使用該特定虛擬主機的 API Proxy 會受到影響。 |
conf_load_balancing_load.balancing.driver.proxy.read.timeout
|
路由器 |
指定路由器在建立連線並將要求傳送至訊息處理器後,等待訊息處理器回應的最長時間。 如果在逾時期間內,訊息處理器沒有回應,路由器就會逾時。 這個屬性會用於這個路由器上的所有虛擬主機。 此屬性的預設值為 57 秒。 您可以按照下文「在路由器上設定 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
|
路由器 |
指定路由器在建立連線並將要求傳送至每個訊息處理器後,等待所有訊息處理器傳回回應的總時間。 如果 Edge 安裝作業有多個訊息處理器,且發生錯誤時已啟用重試功能,就適用這項做法。值為下列其中一個:
與 |
事前準備
使用本文中的步驟前,請務必瞭解下列主題:
- 如果您不熟悉虛擬主機資源,請參閱 虛擬主機資源參考資料。
- 如果您不熟悉如何為 Private Cloud 上的 Edge 設定屬性,請參閱「如何設定 Edge」。
- 請務必遵循 設定 I/O 逾時最佳做法建議。
在虛擬主機中設定 I/O 逾時
本節說明如何在與機構和環境相關聯的虛擬主機中設定 I/O 逾時。您可以在虛擬主機中透過 proxy_read_timeout 屬性設定 I/O 逾時,這個屬性代表以秒為單位的 I/O 逾時值。
您可以透過下列任一方法設定虛擬主機:
- Edge UI
- Edge API
Edge UI
如要使用 Edge UI 設定虛擬主機,請按照下列步驟操作:
- 登入 Edge UI。
- 依序前往「管理」>「虛擬主機」。
- 選取要進行這項變更的特定環境。
- 選取要設定新 I/O 逾時值的特定虛擬主機。
- 在「屬性」下方,以秒為單位更新「Proxy Read Timeout」(Proxy 讀取逾時) 值。
舉例來說,如要將逾時時間變更為 120 秒,請輸入 120,如下圖所示:
- 儲存變更。
Edge API
如要使用 Edge API 設定虛擬主機,請按照下列步驟操作:
- 使用
取得虛擬主機 API 取得目前的虛擬主機設定,如下所示:
公有雲使用者
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 - 使用「Update a virtual host」(更新虛擬主機) API,以變更更新
virtualhost設定,如下所示:公有雲使用者
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設定,如下所示:公有雲使用者
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 支援團隊聯絡。
在路由器上設定 I/O 逾時
本節說明如何在路由器上設定 I/O 逾時。您可以透過 Router 屬性 conf_load_balancing_load.balancing.driver.proxy.read.timeout 設定 I/O 逾時,這個屬性代表以秒為單位的 I/O 逾時值。
如要在路由器上設定 I/O 逾時,請按照下列步驟操作:
- 在路由器電腦上,使用編輯器開啟下列檔案。如果不存在,請建立該檔案。
/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
- 如下所示重新啟動路由器:
/opt/apigee/apigee-service/bin/apigee-service edge-router restart
- 如果你有多個路由器,請在所有路由器上重複上述步驟。
conf_load_balancing_load.balancing.driver.proxy.read.timeout=time_in_seconds
舉例來說,如要將路由器 的 I/O 逾時時間變更為 120 秒,請新增下列程式碼:
conf_load_balancing_load.balancing.driver.proxy.read.timeout=120
您也可以修改 I/O 超時時間 (以分鐘為單位)。舉例來說,如要將逾時時間變更為兩分鐘,請新增下列程式碼:
conf_load_balancing_load.balancing.driver.proxy.read.timeout=2m
驗證路由器上的 I/O 超時
本節說明如何確認路由器上的 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,這是預設虛擬主機的設定檔。這表示路由器上的 I/O 超時已成功設定為 120 秒。 - 如果屬性
proxy_read_timeout仍顯示舊值,請確認您已正確按照「在路由器上設定 I/O 逾時」一文中的所有步驟操作。如果遺漏任何步驟,請再次正確執行所有步驟。 - 如果仍無法修改 I/O 超時,請與 Apigee Edge 支援團隊聯絡。
後續步驟
瞭解如何在訊息處理器中設定 I/O 逾時