神秘的HAProxy请求错误

我在前端代理服务器上看到了大量的请求错误(每秒几个),但我无法弄清楚是什么原因造成的。 我已经尝试在统计套接字上使用“显示错误”命令…

echo "show errors" | socat unix-connect:/var/run/haproxy.stat stdio

但是这没有任何回报。 debugging日志logging也不给我任何提示。 还有其他地方我应该看?

编辑:只是为了澄清,本身没有“错误信息”(虽然它肯定会有帮助)。 我只是在Web界面和socat输出中查看标记为“请求错误”的计数器,并试图找出是什么增加了它。

你看过dmesg吗? 代理服务器的一个常见问题是,由于每个请求都用于连接,因此需要进行最大的Linux连接跟踪。 如果是这种情况,你会看到ip_conntrack: table full, dropping packet. 在dmesg。 你可以看到当前的计数,并通过sysctl或proc来提高它:

 [kbrandt@lb01: ~] cat /proc/sys/net/netfilter/nf_conntrack_max 131072 [kbrandt@lb01: ~] cat /proc/sys/net/netfilter/nf_conntrack_count 185 

您也可以绕过NOTRACK目标的连接跟踪,即:

 sudo /sbin/iptables -t raw -A PREROUTING -p tcp --sport 80 -j NOTRACK 

请记住,禁用跟踪是一种安全风险,除非您已经在有状态的防火墙之后,否则不想这样做。

你能发布你所看到的错误吗?

我怀疑迈克尔只在统计网页上看到他们。 这些错误很可能是由于端口扫描造成的。 如果你的haproxyconfiguration有“选项dontlognull”,你将不会得到任何日志,但是它们仍然被正确地解释了。 如果他们是无效的HTTP请求,你会看到他们在“显示错误”,这似乎并不是这种情况。 每秒钟不要担心,一旦你发现它们只是端口扫描,那就几乎没有。 一些重要的网站每秒钟在数百到数千之间!

@Tim:最近的版本已经修复了一个问题,那就是旧的版本会导致一些这样的错误不被报告(他们被认为是在后端,他们没有被检索)。 我确定就是这样。