2017-06-21 92 views
2

haproxy非常新,並且愛它,除了我們得到的504問題。相關的日誌輸出是:haproxy 504超時到apache

Jun 21 13:52:06 localhost haproxy[1431]: 192.168.0.2:51435 [21/Jun/2017:13:50:26.740] www-https~ beFootprints/foorprints 0/0/2/-1/100003 504 195 - - sH-- 2/2/0/0/0 0/0 "POST /MRcgi/MRlogin.pl HTTP/1.1" 
Jun 21 13:54:26 localhost haproxy[1431]: 192.168.0.2:51447 [21/Jun/2017:13:52:46.577] www-https~ beFootprints/foorprints 0/0/3/-1/100005 504 195 - - sH-- 2/2/0/0/0 0/0 "POST /MRcgi/MRlogin.pl HTTP/1.1" 
Jun 21 14:15:57 localhost haproxy[1431]: 192.168.0.1:50225 [21/Jun/2017:14:14:17.771] www-https~ beFootprints/foorprints 0/0/2/-1/100004 504 195 - - sH-- 3/3/0/0/0 0/0 "POST /MRcgi/MRlogin.pl HTTP/1.1" 
Jun 21 14:22:26 localhost haproxy[1431]: 192.168.0.1:50258 [21/Jun/2017:14:20:46.608] www-https~ beFootprints/foorprints 0/0/2/-1/100003 504 195 - - sH-- 2/2/0/0/0 0/0 "POST /MRcgi/MRlogin.pl HTTP/1.1" 

使用下面的超時值在haproxy.cfg

defaults 
     log  global 
     mode http 
     option forwardfor 
     option httplog 
     option dontlognull 
     timeout connect 5000 
     timeout client 50000 
     timeout server 100000 

運行在Ubuntu 16.04.2 LTS

任何幫助和評論非常感謝!

+0

感謝您提供日誌條目,並使其成爲乾淨,簡潔,格式良好的問題。你會驚訝多久沒有發生。 –

回答

2

該問題似乎與Web服務器有關。檢查日誌,在那裏,你應該找到長時間運行的請求。

下面是我如何得出結論。

注意sH--在您的日誌中。這是session state at disconnection。這對於故障排除非常重要。這些值是位置和區分大小寫的。

小號:服務器側的超時而等待服務器發送或接收的數據過期。

...所以,timeout server燒成,而且...

^h:代理從服務器等待完整的,有效的響應頭(只允許HTTP)。

服務器沒有完成(甚至未開始)returing所有的響應頭的代理,但建立連接,並請求已發送。

HAProxy返回504 Gateway Timeout,表示後端沒有及時響應。

如果您的後端需要超過100秒(?!),那麼您需要增加timeout server。否則,你的Apache服務器似乎有一個問題,響應速度太慢。

+0

嗨邁克爾,這就是我最初的想法,超時只發生在網站通過ldap驗證用戶時。但是,當我們直接登錄到Web服務器時,我們沒有100秒的暫停,504錯誤後點擊Ctrl F5並直接進入... – Ads

+0

應用程序日誌或apache訪問或錯誤日誌中應該有些東西,或者您可能需要在應用程序中添加一些額外的日誌記錄......不同行爲的原因需要解釋,並且基於這些日誌條目,解釋更可能位於應用程序服務器上,而不是代理服務器上。 –

+0

@Ads你曾經解決過這個問題嗎?我現在在同一條船上。任何幫助將不勝感激! – Pedro