2017-06-21 51 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