[英]GCP AppEngine nodejs The server encountered an error and could not complete your request
[英](GCP) : Server Error The server encountered a temporary error and could not complete your request. Please try again in 30 seconds
創建此答案是為了根據 OP 提供的有限信息和上面寫的評論來支持社區。
當您嘗試確定 HTTP 負載均衡器問題的根本原因時,最准確的決定是查看日志條目。
根據谷歌官方文檔。 HTTP(S) 負載平衡日志條目包含對監控和調試 HTTP(S) 流量有用的信息。
日志條目包含以下類型的信息:
- 一般信息,例如嚴重性、項目 ID、項目編號和時間戳。
- HttpRequest 日志字段。 但是,不會為 HTTP(S) 負載平衡 Cloud Logging 日志填充
HttpRequest.protocol
。- structPayload 中的 statusDetails 字段。 該字段包含一個字符串,用於解釋負載均衡器返回它所做的 HTTP 狀態的原因。 下表包含對這些日志字符串的進一步說明。 statusDetails 字段不適用於區域外部 HTTP(S) 負載平衡器。
- 不會記錄從負載平衡器發出的重定向(HTTP 響應狀態代碼 302 Found) 。 記錄從后端實例發出的重定向。
要在 HTTP 負載均衡器中啟用日志條目,請遵循本指南。
消息“錯誤:服務器錯誤服務器遇到臨時錯誤,無法完成您的請求。” 可能由多種原因引起,包括:
在此頁面中,您可以找到執行與一般連接問題相關的完整故障排除的詳細指南。
我發現這些帖子與 HTTP 負載平衡器和 502 響應相關,您可以在這些帖子中找到有用的信息。
在我的情況下,問題是運行狀況檢查未返回 200。它在調用默認 / 時返回 302(找到)並重定向到其他 url 200(負載平衡器檢查忽略)並將該節點視為“不健康”,而不是路由傳入的 http /s 對損壞節點的請求將其從輪換中移除並將該 502 錯誤消息返回給客戶端。
錯誤:服務器錯誤 服務器遇到臨時錯誤,無法完成您的請求。 請在 30 秒后重試。
在我的 LoadBalancer 下是 GKE 集群,它帶有 gke ingress->service-> pod 並且沒有配置顯式的 liveness/readiness 探針,因此默認情況下運行狀況檢查命中 / 並帶有 302/Found/redirect。
在將這些探測器添加到部署清單並將它們指向返回 OK/200 的端點之后(/-/healthy,/-/ready 在我的 prometheus 在 pod 內運行的情況下)問題得到修復。
不幸的是,gke ingress 僅在注釋中提供了非信息性消息 UNHEALTY,因此我花了一段時間才了解導致該問題的原因。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.