Haproxy的问题会随着时间的推移而减慢

由于Perlbal的内存使用,我们最近从Perlbal迁移到HAProxy。 尽pipe最近我们遇到了一个我似乎无法解决的问题(这并不能帮助我不熟悉HAproxy的configuration选项),但这是相当完美的迁移。

我们是一个媒体网站,提供相当数量的stream量 – 我们使用HAProxy在我们的媒体服务器上传播负载。 一旦开始HAProxy一切都是活泼的,并相应地工作 – 虽然大约10-20分钟后事情开始放缓,媒体服务非常缓慢。 我相当肯定这是HAProxy,因为简单的服务重新启动纠正了这个问题。

我正在使用一个相当香草HAProxyconfiguration没有钟声或口哨声:

默认
        日志全球
        模式http
        选项httplog
        选项dontlognull
        重试3
        选项重新发布
         maxconn 2000
         contimeout 5000
         clitimeout 50000
         srvtimeout 50000

听媒体0.0.0.0:80
        平衡roundrobin
        服务器media_1 xxxx:8080重量1 maxconn 1024检查
       服务器media_2 xxxx:8080重量1 maxconn 1024检查

任何人都可以解释一下问题可能是什么?

你的configuration确实很简单。 我看到你没有“selecthttpclose”,你有一个非常低的“maxconn”,也许你只是在高负载下连接不上? 你一定要启用这个选项。 你也应该启用stats页面,在“listen”部分添加“stats uri / haproxy-stats”。 然后,您将浏览器连接到您网站上的该URL,您将看到并发连接,每秒连接数,错误等等的所有统计数据……这将对您有所帮助。

哦,这是什么版本? 1.3.16有一个令人讨厌的bug,使得它在一些stream量模式下吃了很多CPU。 你应该使用1.3.18或1.3.15.X.

威利

由于它随着时间的推移发生,可能是某种资源枯竭。

你在监视各种可用内存统计和处理器使用情况吗?

我要说的第一件事是启用HAProxy统计页面,也许还有日志logging。

您的后端Web服务器也可能拒绝来自单个IP的太多连接。 使用HAProxy(不包含tproxy),可以看到来自负载平衡节点的请求。 这可能会造成这样的问题。