查看 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 的屬性,請參閱 如何設定 Edge:
- 請務必遵循 設定 I/O 逾時建議的最佳做法。
設定虛擬主機的 I/O 逾時
本節說明如何在與伺服器關聯的
機構和環境您可以透過
屬性 proxy_read_timeout
,代表 I/O 逾時值 (以秒為單位)。
您可以透過下列任一方式設定虛擬主機:
- Edge UI
- Edge API
Edge UI
如要透過 Edge UI 設定虛擬主機,請按照下列步驟操作:
- 登入 Edge UI。
- 前往「管理」>「管理員」虛擬主機。
- 選取您要進行這項變更的特定環境。
- 選取要設定新的虛擬主機 I/O 逾時值。
- 在「Properties」(屬性) 之下,更新「Proxy Read Timeout」值 (以秒為單位)。
舉例來說,假設您要將逾時時間改為 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
- 使用以下指令更新
virtualhost
設定: 請按照下列步驟更新虛擬主機 API:公有雲使用者
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 逾時
本節將說明如何驗證 I/O 逾時是否已成功修改 執行 Pod
- 執行
取得虛擬主機 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 逾時。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
的實際屬性是否
已設定為新的值
- 在「
proxy_read_timeout
」中搜尋資源/opt/nginx/conf.d
目錄,並查看該目錄是否已採用 新的值如下:grep -ri "proxy_read_timeout" /opt/nginx/conf.d
- 如果已成功在路由器上設定新的 I/O 逾時值,則上述指令
會顯示所有虛擬主機設定檔中的新值。
以下是上述
grep
指令在 I/O 逾時為 120 秒:/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 逾時