HAProxy造成延迟

我正在尝试将HAProxyconfiguration为为我创build的自定义Web服务器执行负载平衡。 现在我注意到随着返回消息的大小增加,HAProxy的延迟日益增加。 例如,我跑了四个不同的testing,结果如下:

通过HAProxy响应15kb:
平均。 响应时间:.34秒
交易速度:763 trans / sec
吞吐量:11.08 MB /秒

通过HAProxy响应2kb:
平均。 响应时间:.08秒
交易速率:1171转/秒
吞吐量:2.51 MB /秒

响应15kb直接到服务器:
平均。 响应时间:.11秒
交易速率:1046转/秒
吞吐量:15.20 MB /秒

响应2kb直接到服务器:
平均。 响应时间:.05秒
交易速率:1158转/秒
吞吐量:2.48 MB /秒

所有事务都是HTTP请求。 正如你所看到的,响应时间比响应时间更短的响应时间似乎有更大的差异。 我明白使用HAProxy会有一些延迟。 不知道是否重要,但testing本身是使用围攻运行。 在testing期间,HAProxy后面只有一台服务器(与直接到服务器testing中使用的服务器相同)。 这是我的haproxy.config文件:

global log 127.0.0.1 local0 log 127.0.0.1 local1 notice maxconn 10000 user haproxy group haproxy daemon #debug defaults log global mode http option httplog option dontlognull retries 3 option redispatch option httpclose maxconn 10000 contimeout 10000 clitimeout 50000 srvtimeout 50000 balance roundrobin stats enable stats uri /stats listen lb1 10.1.10.26:80 maxconn 10000 server app1 10.1.10.200:8080 maxconn 5000 

我无法find这个文件中的选项,这将有助于我的问题。 我听说过我可能需要调整一些我的sysctl设置的build议。 但是我找不到很多关于这方面的信息,大多数文档是针对sysctl的Linux 2.4和2.6版本的,我运行的是3.2(Ubuntu server 12.04),这似乎是自动调整的,所以我不知道该怎么做不应该改变。 我尝试过的大多数设置更改对性能没有任何影响或负面影响。

只是一个通知,这是一个非常初步的testing,我希望在部署时,我的HAProxy将能够平衡10k-20k请求/秒到许多服务器,所以如果任何人可以提供信息来帮助我实现这一目标,这将不胜感激。

非常感谢您提供的任何信息。 如果你还需要我的信息,请告诉我,我会尽可能地给你。

[编辑]按照要求haproxy -vv

 HA-Proxy version 1.4.18 2011/09/16 Copyright 2000-2011 Willy Tarreau <[email protected]> Build options : TARGET = linux26 CPU = generic CC = gcc CFLAGS = -O2 -g -fno-strict-aliasing OPTIONS = USE_LINUX_SPLICE=1 USE_LINUX_TPROXY=1 USE_PCRE=1 Default settings : maxconn = 2000, bufsize = 16384, maxrewrite = 8192, maxpollevents = 200 Encrypted password support via crypt(3): yes Available polling systems : sepoll : pref=400, test result OK epoll : pref=300, test result OK poll : pref=200, test result OK select : pref=150, test result OK Total: 4 (4 usable), will use sepoll. 

我在想几点:

1)你在虚拟环境中运行吗?

2)你有没有在机器上加载nf_conntrack?

3)你是否曾经在任何一台机器上使CPU饱和?

4)请使用“选项http-server-close”而不是“option httpclose”,因为后者让双方自行closures,导致更长的连接。

5)你在haproxy的日志中看到了什么? 时间将分成多个字段,让您分析它的用途。

6)如果haproxy日志中的日志比在你的testing机器上看到的时间less得多,这意味着延迟导致SYN数据包等待系统积压(或者更糟糕的是,重新传输),这可能是由于缺乏系统调优。

7)(不太重要),在报告旧版本的问题时,应首先将其更新到最新的修补程序(1.4.22),以查看问题是否仍然存在。 我不认为你所观察到的与任何已知问题相匹配,但这仍然是一般的想法。