Haproxy 随时间推移变慢的问题

Haproxy 随时间推移变慢的问题

由于 Perlbal 的内存使用问题,我们最近从 Perlbal 迁移到了 HAProxy。虽然最近我们遇到了一个我似乎无法解决的问题(这无济于事,因为我不熟悉 HAproxy 的无数配置选项)。

我们是一个媒体网站,流量很大 - 我们使用 HAProxy 将负载分散到我们的媒体服务器。启动 HAProxy 后,一切都很顺畅,工作正常 - 但大约 10-20 分钟后,速度开始变慢,媒体服务非常缓慢。我相当肯定这是 HAProxy 的问题,因为只需重新启动服务即可解决问题。

我使用的是相当普通的 HAProxy 配置,没有任何花哨的功能:

默认值
        记录全局
        模式 http
        选项 httplog
        选项 dontlognull
        重试 3
        选项重新分派
        最大頻接2000
        超时 5000
        气候超时 50000
        srvtimeout 50000

监听媒体 0.0.0.0:80
        平衡循环赛
        服务器 media_1 xxxx:8080 权重 1 maxconn 1024 检查
       服务器 media_2 xxxx:8080 权重 1 maxconn 1024 检查

有人能解释一下这个问题是什么吗?

答案1

您的配置确实非常简单。我发现您没有“option httpclose”,而且“maxconn”非常低,也许您只是在高负载下耗尽了连接?您绝对应该启用此选项。您还应该通过在“listen”部分添加“stats uri /haproxy-stats”来启用统计页面。然后,您将浏览器连接到您网站上的该 URL,您将看到所有统计数据,包括并发连接数、每秒连接数、错误数等。这将对您大有帮助。

哦,这是哪个版本?1.3.16 有一个严重的错误,导致它在某些流量模式下消耗大量 CPU。您应该使用 1.3.18 或 1.3.15.X。

威利

答案2

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

您是否监控各种可用内存统计数据和处理器使用情况?

答案3

我想说,首先要做的是启用 HAProxy 统计页面,也许还要启用日志记录。

答案4

您的后端 Web 服务器也可能拒绝来自单个 IP 的过多连接。使用 HAProxy(不带 tproxy)时,请求会显示来自负载平衡节点。这可能会造成此类问题。

相关内容