您正在查看 Apigee Edge 說明文件。
查看 Apigee X 說明文件。 資訊
本文說明如何在 Apigee Edge 路由器上設定 I/O 逾時。
路由器上的 I/O 逾時,代表路由器在建立連線並將要求傳送至訊息處理器之後,等待訊息處理器收到回應的時間。路由器上的 I/O 逾時值預設為 57 秒。
您可以視需求增加或減少路由器的 I/O 逾時時間 (預設值為 57 秒)。您可以用以下方式設定:
- 在虛擬主機中
- 路由器
下列屬性可控制路由器上的 I/O 逾時:
資源名稱 | 位置 | 說明 |
---|---|---|
proxy_read_timeout
|
虛擬主機 |
指定路由器在建立連線並將要求傳送至訊息處理器後,等待接收訊息處理器回應的最長時間。 如果訊息處理器在這段時間內沒有回應,則路由器就會逾時。 根據預設,此屬性會採用路由器上 如果針對特定虛擬主機修改這項屬性並新增逾時值,則只有使用該虛擬主機的 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。
- 請務必遵循 設定 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 讀取逾時」的值 (以秒為單位)。
舉例來說,如果您想將逾時時間變更為 120 秒,請輸入 120,如下圖所示:
- 儲存變更。
Edge API
如要使用 Edge API 設定虛擬主機,請執行下列操作:
- 使用
Get virtual Host 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
- 透過
更新虛擬主機 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 逾時。您可以透過路由器屬性 conf_load_balancing_load.balancing.driver.proxy.read.timeout
(以秒為單位) 設定 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
設定路由器的 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,這是預設虛擬主機的設定檔。這表示路由器的 I/O 逾時已成功設為 120 秒。 - 如果還是看到屬性
proxy_read_timeout
的舊值,請確認您已按照正確設定路由器的 I/O 逾時一文所述的所有步驟操作。如果錯過任何步驟,請再次正確重複所有步驟。 - 如果仍無法修改 I/O 逾時,請與 Apigee Edge 支援團隊聯絡。
接下來呢?
瞭解如何在訊息處理器中設定 I/O 逾時