您目前查看的是 Apigee Edge 說明文件。
前往 Apigee X 說明文件。 info
本文說明如何為 Apigee Edge Message Processor 設定 I/O 超時。
訊息處理器的 I/O 逾時代表訊息處理器等待的時間,包括等待從後端伺服器接收回應,或等待插座準備好將要求寫入後端伺服器,然後逾時。
訊息處理器 I/O 超時的預設值為 55 seconds。這個逾時時間適用於目標端點設定中設定的後端伺服器,以及 API Proxy 的 ServiceCallout 政策。
您可以根據需求,將訊息處理器的 I/O 超時時間調高或調低,預設值為 55 seconds。您可以在下列位置設定這項功能:
- 在 API Proxy 中
- 目標端點
- ServiceCallout 政策
- 在訊息處理器上
下列屬性可控制訊息處理器的 I/O 逾時:
| 資源名稱 | 位置 | 說明 |
|---|---|---|
io.timeout.millis
|
API Proxy:
|
這是訊息處理器執行下列動作的最長時間:
如果後端伺服器在這段逾時期間內沒有回應,訊息處理器就會逾時。
根據預設,這個屬性會採用在 訊息處理器 上為 如果使用特定 API Proxy 的新逾時值修改這個屬性,則只有該 API Proxy 會受到影響。 |
HTTPTransport.io.timeout.millis
|
訊息處理器 |
這是訊息處理器執行下列動作的最長時間:
如果後端伺服器在這段逾時期間內沒有回應,訊息處理器就會逾時。 這個屬性適用於在這個訊息處理器上執行的所有 API Proxy。
此屬性的預設值為
您可以按照「在訊息處理器上設定 I/O 逾時」一文的說明修改這項屬性,也可以在 API 代理層級設定 |
事前準備
使用本文中的步驟前,請務必瞭解下列主題:
- 如果您不熟悉 I/O 超時,請參閱
目標端點傳輸屬性規格中的
io.timeout.millis屬性說明。 - 如果您不熟悉如何設定 Edge for Private Cloud 的屬性,請參閱「 如何設定 Edge」。
- 請務必遵循「 設定 I/O 逾時的最佳做法」一文中的建議。
在 API Proxy 中設定 I/O 超時
您可以在下列 API Proxy 位置設定 I/O 逾時:
- 目標端點
- ServiceCallout 政策
在 API Proxy 的目標端點中設定 I/O 超時
本節說明如何在 API Proxy 的目標端點中設定 I/O 超時。您可以透過 io.timeout.millis 屬性設定 I/O 逾時,這個屬性代表以毫秒為單位的 I/O 逾時值。
- 在 Edge UI 中,選取要設定新 I/O 逾時值的特定 API Proxy。
- 選取要修改的特定目標端點。
- 在
TargetEndpoint設定的<HTTPTargetConnection>元素下方,新增io.timeout.millis屬性並提供適當值。 - 儲存對 API Proxy 所做的變更。
舉例來說,如要將 I/O 逾時時間變更為 120 秒,請新增下列程式碼區塊:
<Properties>
<Property name="io.timeout.millis">120000</Property>
</Properties>由於 io.timeout.millis 屬性是以毫秒為單位,因此 120 秒的值為 120000。
以下範例說明如何在 API Proxy 的目標端點設定中設定 I/O 超時:
使用後端伺服器網址的目標端點設定範例
<TargetEndpoint name="default">
<HTTPTargetConnection>
<URL>https://mocktarget.apigee.net/json</URL>
<Properties>
<Property name="io.timeout.millis">120000</Property>
</Properties>
</HTTPTargetConnection>
</TargetEndpoint>使用目標伺服器的目標端點設定範例
<TargetEndpoint name="default">
<HTTPTargetConnection>
<LoadBalancer>
<Server name="target1" />
<Server name="target2" />
</LoadBalancer>
<Properties>
<Property name="io.timeout.millis">120000</Property>
</Properties>
<Path>/test</Path>
</HTTPTargetConnection>
</TargetEndpoint>在 API Proxy 的 ServiceCallout 政策中設定 I/O 超時
本節說明如何在 API Proxy 的 ServiceCallout 政策中設定 I/O 逾時。您可以透過 <Timeout> 元素或 io.timeout.millis 屬性設定 I/O 超時。<Timeout> 元素和 io.timeout.millis 屬性都代表以毫秒為單位的 I/O 逾時值。
您可以使用下列任一方法,在 ServiceCallout 政策中設定 I/O 逾時:
<Timeout>元素。io.timeout.millis屬性。
逾時元素
如要使用 <Timeout> 元素在 ServiceCallout 政策中設定 I/O 逾時,請按照下列步驟操作:
- 在 Edge UI 中,選取要為 ServiceCallout 政策設定新 I/O 逾時值的特定 API Proxy。
- 選取要修改的特定 ServiceCallout 政策。
- 在
<ServiceCallout>設定下方新增<Timeout>元素,並提供適當值。舉例來說,如要將 I/O 逾時時間變更為 120 秒,請新增下列程式碼行:
<Timeout>120000</Timeout>
由於
<Timeout>元素是以毫秒為單位,因此 120 秒的值為120000。以下範例說明如何使用
<Timeout>元素,在 ServiceCallout 政策中設定 I/O 逾時:使用後端伺服器網址的 ServiceCallout 政策設定範例
<ServiceCallout name="Service-Callout-1"> <DisplayName>ServiceCallout-1</DisplayName> <Timeout>120000</Timeout> <HTTPTargetConnection> <Properties/> <URL>https://mocktarget.apigee.net/json</URL> </HTTPTargetConnection> </ServiceCallout> - 儲存對 API Proxy 所做的變更。
io.timeout.millis 屬性
如要使用 io.timeout.millis 屬性在 ServiceCallout 政策中設定 I/O 逾時,請按照下列步驟操作:
- 在 Edge UI 中,選取要為 ServiceCallout 政策設定新 I/O 逾時值的特定 API Proxy。
- 選取要修改的特定 ServiceCallout 政策。
- 在 TargetEndpoint 設定的
<HTTPTargetConnection>元素下方,新增io.timeout.millis屬性並提供適當值。舉例來說,如要將 I/O 逾時時間變更為 120 秒,請新增下列程式碼區塊:
<Properties> <Property name="io.timeout.millis">120000</Property> </Properties>由於
io.timeout.millis屬性是以毫秒為單位,因此 120 秒的值為120000。以下範例說明如何在 API Proxy 的目標端點設定中設定 I/O 逾時:
使用後端伺服器網址的 ServiceCallout 政策設定範例
<ServiceCallout name="Service-Callout-1"> <DisplayName>ServiceCallout-1</DisplayName> <HTTPTargetConnection> <Properties> <Property name="io.timeout.millis">120000</Property> </Properties> <URL>https://mocktarget.apigee.net/json</URL> </HTTPTargetConnection> </ServiceCallout>使用目標伺服器的 ServiceCallout 政策設定範例
<ServiceCallout enabled="true" name="Service-Callout-1"> <DisplayName>ServiceCallout-1</DisplayName> <Response>calloutResponse</Response> <HTTPTargetConnection> <LoadBalancer> <Server name="target1" /> <Server name="target2" /> </LoadBalancer> <Properties> <Property name="io.timeout.millis">120000</Property> </Properties> <Path>/test</Path> </HTTPTargetConnection> </ServiceCallout> - 儲存對 API Proxy 所做的變更。
在訊息處理器上設定 I/O 逾時
本節說明如何設定訊息處理器的 I/O 逾時。您可以透過 HTTPTransport.io.timeout.millis 屬性設定 I/O 逾時,該屬性代表訊息處理器元件上的 I/O 逾時值 (以毫秒為單位),並使用 如何設定 Edge 中所述語法的權杖。
如要在訊息處理器上設定 I/O 逾時,請按照下列步驟操作:
- 在訊息處理器電腦上,使用編輯器開啟下列檔案。如果該目錄不存在,請建立該目錄。
/opt/apigee/customer/application/message-processor.properties
舉例來說,如要使用
vi開啟檔案,請輸入下列指令:vi /opt/apigee/customer/application/message-processor.properties
- 在屬性檔案中新增一行,格式如下,並將 TIME_IN_MILLISECONDS 替換為值:
conf_http_HTTPTransport.io.timeout.millis=TIME_IN_MILLISECONDS
舉例來說,如要將訊息處理器的 I/O 逾時時間變更為 120 秒,請新增下列程式碼:
conf_http_HTTPTransport.io.timeout.millis=120000
- 儲存變更。
- 確認屬性檔案是由
apigee使用者擁有,如下所示:chown apigee:apigee /opt/apigee/customer/application/message-processor.properties
- 如下所示重新啟動訊息處理器:
/opt/apigee/apigee-service/bin/apigee-service edge-message-processor restart
- 如果您有多個訊息處理器,請在所有訊息處理器上重複上述步驟。
驗證訊息處理器的 I/O 逾時
本節說明如何確認訊息處理器上的 I/O 逾時已成功修改。
即使您使用權杖 conf_http_HTTPTransport.io.timeout.millis 在訊息處理器上設定 I/O 逾時,仍須確認實際屬性 HTTPTransport.io.timeout.millis 是否已設為新值。
- 在訊息處理器電腦上,搜尋
/opt/apigee/edge-message-processor/conf目錄中的HTTPTransport.io.timeout.millis屬性,並檢查是否已設定新值,如下所示:grep -ri "HTTPTransport.io.timeout.millis" /opt/apigee/edge-message-processor/conf
- 如果成功在訊息處理器上設定新的 I/O 逾時值,上述指令就會在
http.properties檔案中顯示新值。 - 如果屬性仍顯示舊值,請確認您已正確按照「在訊息處理器上設定 I/O 逾時」一文中的所有步驟操作。
HTTPTransport.io.timeout.millis如果遺漏任何步驟,請再次正確重複所有步驟。 - 如果仍無法修改 I/O 超時,請與 Apigee Edge 支援團隊聯絡。
將 I/O 逾時時間設為 120 秒後,上述指令的範例結果如下:
/opt/apigee/edge-message-processor/conf/http.properties:HTTPTransport.io.timeout.millis=120000
在上述範例輸出內容中,請注意屬性 HTTPTransport.io.timeout.millis 已在 http.properties 中設定為新值 120000。這表示訊息處理器上的 I/O 超時已成功設定為 120 秒。
後續步驟
瞭解如何 在路由器上設定 I/O 超時