haproxy and tomcat intermittent hangs
- by Lorin
I am trying to run haproxy in front of tomcat on a Solaris x86 box, but I am getting intermittent failures. At seemingly random intervals, the request just hangs until haproxy times out the connection.
I thought maybe it was my app, but I've been able to reproduce it with the tomcat manager app, and hitting tomcat directly there is no problems at all.
Hitting it repeatedly with curl will cause the error within 10-15 tries
curl -ikL http://admin:admin@<my server>:81/manager/status
haproxy is running on port 81, tomcat on port 7000. haproxy returns a 504 gateway timeout to the client, and puts this into the log file:
Sep 7 21:39:53 localhost haproxy[16887]: xxx.xxx.xxx.xxx:65168 [07/Sep/2009:21:39:23.005] http_proxy http_proxy/tomcat7000 5/0/0/-1/30014 504 194 - - sHNN 0/0/0/0/0 0/0 "GET /manager/status HTTP/1.1"
Tomcat shows nothing, no error in the logs and no indication that the request ever makes it to the tomcat server. The request count is not incremented, the manager app only shows activity on one thread, serving up the manager app.
Here are my haproxy and tomcat connector settings, I've been playing with both a good deal trying to chase down the issue, so they may not be ideal, but they definitely don't seem like they should cause this error.
server.xml
<Connector
port="7000" protocol="HTTP/1.1"
enableLookups="false" maxKeepAliveRequests="1"
connectionLinger="10"
/>
haproxy config
global
log loghost local0
chroot /var/haproxy
listen http_proxy :81
mode http
log global
option httplog
option httpclose
clitimeout 150000
srvtimeout 30000
contimeout 3000
balance roundrobin
cookie SERVERID insert
server tomcat7000 127.0.0.1:7000 cookie server00 check inter 2000