您目前查看的是 Apigee 和 Apigee Hybrid 說明文件。
這個主題沒有對應的
Apigee Edge 說明文件。
問題
這個問題會顯示為 Gateway Timeout 錯誤,並附上 HTTP 狀態 504。
錯誤訊息
您可能會在 API 監控、偵錯或其他工具中看到這項錯誤。TARGET_READ_TIMEOUT 原因表示 Apigee 執行階段在執行要求期間,未及時收到目標的回應。
預設目標讀取逾時值 (io.timeout.millis) 為 55 秒。也就是說,如果目標在 55 秒後未回應,Apigee 會擲回這項錯誤:
{"fault":{"faultstring":"Gateway Timeout",
"detail":{"errorcode":"messaging.adaptors.http.flow.GatewayTimeout",
"reason":"TARGET_READ_TIMEOUT"}}}可能原因
| 原因 | 說明 | 適用於以下裝置的疑難排解說明 |
|---|---|---|
| 目標速度緩慢 | 目標未及時產生回應。 | Apigee X 和 Apigee Hybrid |
| TargetServer 連線問題 | 當 TargetEndpoint 上設定 <LoadBalancer> 時,目標發生一般連線問題。 |
Apigee X 和 Apigee Hybrid |
原因:目標速度緩慢
診斷
您可以使用 Apigee Debug Tool 診斷目標速度緩慢的問題:
- 為 API Proxy 建立偵錯工作階段。
- 在偵錯工作階段中傳送要求,並檢查偵錯輸出內容。
如上例所示,目標要求超過 55 秒,也就是預設目標逾時限制。時間限制可供設定,如果您已變更逾時時間,目標要求的時間長度就會與您設定的逾時時間相符。舉例來說,如果逾時時間為 10 秒,則目標要求會在 10 秒後逾時。這類「目標速度緩慢」的行為清楚指出,目標未及時回應要求。
解析度
Apigee 建議您避免使用速度緩慢的目標。 舉例來說,如果正常目標延遲時間為 50 毫秒,但您遇到 55000 毫秒的延遲時間,可能需要調查目標是否有問題。
如必須延長逾時時間,請按照下列步驟操作:
- 在 Proxy 編輯器中,點選「Develop」分頁標籤。
- 在導覽窗格中,選取受影響的目標端點。
- 在 XML 編輯器中,找出
HTTPTargetConnectionXML 元素:
- 在
<HTTPTargetConnection>元素下方新增io.timeout.millis屬性,並以毫秒為單位指定新的時間限制,例如:<HTTPTargetConnection> <URL>https://my-very-slow-target.example.com</URL> <Properties> <Property name="io.timeout.millis">120000</Property> </Properties> </HTTPTargetConnection>在上述範例中,逾時時間已增加至 120 秒。請注意,300 秒是上限。詳情請參閱「Endpoints 屬性參考資料」。
- 儲存新修訂版本並部署 Proxy。
如果問題仍未解決,請參閱下方的「必須收集診斷資訊」。
原因:TargetServer 連線問題
診斷
設定 <LoadBalancer> 端點屬性時,Apigee 不會揭露連線問題的確切原因。您或許可以從目標要求經過的時間推斷連線問題的原因,做為偵錯方法,您可以嘗試完全移除 <LoadBalancer> 元素,並嘗試直接在 Proxy 中點選目標。
如要診斷問題,請使用偵錯工具。
- 為 API Proxy 建立偵錯工作階段。
- 在偵錯工作階段中傳送要求,並檢查偵錯輸出內容。
在上述範例中,逾時時間為 9 秒。由於不是 55 秒,您知道錯誤原因並非目標速度緩慢而導致逾時。根據預設,如果在 TargetEndpoint 上使用 <LoadBalancer> 元素,Apigee 會再重試連線兩次。由於您知道系統總共嘗試連線三次,且連線錯誤的預設逾時時間為三秒 (connect.timeout.millis),
因此可以假設問題是連線問題。
解析度
如果確認問題是連線逾時,請參閱 VPC Peering 503 Service Unavailable error with TARGET_CONNECT_TIMEOUT。
如遇其他問題,請移除 <LoadBalancer> 元素進行偵錯,找出確切的錯誤代碼,並在錯誤目錄中檢查該代碼。
必須收集診斷資訊
如果按照上述指示操作後問題仍未解決,請收集下列診斷資訊,然後與 Google Cloud 支援團隊聯絡:
- 專案 ID 和 Apigee 機構名稱
- Proxy 名稱和環境。
- 問題發生的時間範圍。
- 問題發生的頻率
- 目標主機名稱。
- 偵錯工作階段發生問題。