On Wed, 2 Sep 2015 09:26:25 +0300 Vladimir Mihailenco <vladimir.web...@gmail.com> wrote:
> Hi, > > I am trying to migrate existing app written in Go from nginx to HA-Proxy > version 1.5.14 2015/07/02 on Ubuntu 12.04. nginx/haproxy runs behind F5 > load balancer. My config: > https://gist.github.com/vmihailenco/9b41016b05cdea821687 . App mainly > serves POST requests with body size 10-64kb. > > First thing that I noticed after stopping nginx and starting haproxy is > that app spends more time processing requests (same server, same amount of > requests). E.g. with nginx Go responds within 1-2ms, but with haproxy > response time is in range of 100-400ms. I guess the reason is that nginx > buffers incoming request until it is fully read, but haproxy does not. What > can I do to enable request buffering in haproxy? > > From the logs I also see that sometimes Go does not send response headers, > e.g. > > haproxy[6607]: 149.210.205.54:54598 [01/Sep/2015:17:15:01.931] http-in > goab/s1 0/0/0/-1/1 -1 381 - - SD-- 128/128/6/6/0 0/0 {myhost} "POST /url > HTTP/1.1" > haproxy[6607]: 192.243.237.46:34628 [01/Sep/2015:17:15:12.851] http-in~ > goab/s1 224/0/0/1/674 413 381 - - SD-- 128/128/15/15/0 0/0 {myhost} "POST > /url HTTP/1.1" Hi, You can look the documentation about log here: https://cbonte.github.io/haproxy-dconv/configuration-1.5.html#8.2.3 The termination flags are SD--, so the documentation says: S : the TCP session was unexpectedly aborted by the server, or the server explicitly refused it. D : the session was in the DATA phase. I suppose that you have some keepalive errors. Try to activate keepalive between the browser and haproxy, and deactivate between haproxy and your go server. Look for the directive "option httpclose". > So these are 2 identical requests with same response body, but 2nd request > has status code = -1. I don't understand how that is possible, because if > app does not set status code Go uses 200 OK status code. And app does not > crash. > > Thanks in advance for any help/advices.