有 Debian Squeeze 服务器:
1)负载均衡器 - Haproxy 1.4.18,16 个 CPU 核心,5-10 GB RAM(云服务)
2)4 个 Apache 后端(10 GB RAM、16 个 CPU 核心)
当我们启动 haproxy 时,站点运行良好,大约 2 分钟,然后大约 30 秒后挂起。(此时直接访问后端运行良好,没有缓慢的数据库查询或任何后端问题)之后这种情况重复出现。有趣的观察:我们尝试使用 nginx 作为平衡器,我们得到了相同的行为。
当 haproxy(nginx)挂起时,没有任何 cpu 或 ram 高负载。
这种行为的原因是什么?
谢谢!
答案1
我出现了类似的症状,结果发现我达到了连接限制(大约 2000 个连接,这个数字足够被大约 300 个同时浏览网站的用户使用,不知道为什么限制这么小)。我发现 /etc/haproxy/haproxy.cfg 中的以下内容使我的网站更加流畅:
global
maxconn 8192
defaults
[...]
option httpclose
maxconn 8192
答案2
问题已解决。出现此问题是因为 syslog 中有以下 haproxy 字符串:
paroxy: nf_conntrack: table full, dropping packet
paroxy: nf_conntrack: table full, dropping packet
paroxy: nf_conntrack: table full, dropping packet
paroxy: nf_conntrack: table full, dropping packet
我们将 sysctl 设置从
sysctl -a | grep conntrack_max
net.ipv4.netfilter.ip_conntrack_max = 65536
net.netfilter.nf_conntrack_max = 65536
net.nf_conntrack_max = 65536
为较大的值。
答案3
nginx 和 Apache 服务器之间有多少个请求?没有等待的连接吗?
当我在它们之间有很多请求时,我遇到了一些问题。如果可以,请尝试禁用 Apache 和 nginx 上的保持连接。
答案4
您的 haproxy.cfg 是什么样的?有防火墙吗/有速率限制吗?
haproxy 如何安装?配置选项?
尝试使用 1.5 dev7 haproxy 版本使 TARGET=linux26,我的网站上似乎没有任何问题 - 基准测试于http://centminmod.com/siegebenchmark_nginx_test3.html