我有一個服務部署在亞馬遜網絡服務(AWS)上,特別是在Elastic Load Balancer(ELB)之後的兩個實例。可用區域被選爲全部三個us-west-2a,b,c ,但上述三個區域中只有兩個區域中有實例在其中運行。即使主機健康且能夠爲請求提供服務,ELB返回的HTTP 504錯誤
問題是即使流量/負載不是太高,但我仍然經常從ELB獲得HTTP 504錯誤。
日誌行讀取這樣
-1 -1 -1 504 0 0 0
爲了,--request_processing_time --backend_processing_time --response_processing_time --elb_status_code --backend_status_code --received_bytes --sent_bytes。 Description of what each field and response means can be found here
ELB空閒超時時間爲60秒。 KeepAlive
在後端實例上處於「開啓」狀態。 ELB要求的延遲情況在檢查中。我試圖增加KeepAliveTimeout
但無濟於事。
有沒有人有任何關於如何進行的想法?我甚至不知道這個問題的根源。 PS:更類似於第二個問題,有幾種情況(ELB在後端甚至不接受請求時ELB返回的情況遠遠少於504),即使後端正在返回一個504,然後ELB也將其轉發給客戶。據我所知,只有當後端超時時,HTTP 504才應由代理返回。服務器本身如何返回504?
您能分享ELB上提供的cloudwatch指標嗎?你也可以分享你有什麼樣的ELB健康檢查,以及ELB有多少實例可用? – Shibashis
您的_e.g._ Apache實例中是否配置了'MaxRequestsPerChild'?如果ELB與後端實例的持久連接被終止,就像ELB使用該連接接收來自前端客戶端的請求一樣,這也會導致客戶端看到HTTP 504。 – Castaglia
@問題中提到@Shibashis 2個實例附屬於ELB。啓用了詳細的監控,其中包括Backend_5xx,ELB_5xx,延遲,HealthyHosts,RequestCount等。 Healthcheck是一個簡單的HTTP調用,超時時間爲5秒,頻率爲10秒。 – Harshdeep