答案1
问题 1/
正如 Willy 在此帖中提到的:https://www.mail-archive.com/[电子邮件保护]/msg21521.html,您不能为后端指定 maxqueue,但您可以为后端的服务器指定 maxqueue。
首先让我们明确一下队列:每个后端都有一个队列,每个服务器都有一个队列。具有服务器持久性的连接将进入服务器(相关)队列,其他连接将进入后端队列。
当服务器达到 maxqueue 时,HAProxy 文档http://cbonte.github.io/haproxy-dconv/1.7/configuration.html#5.2-maxqueue说
如果达到此限制,下一个请求将被重新分派到其他服务器,而不是无限期地等待服务。这将破坏持久性,但可能允许人们在他们尝试连接的服务器即将崩溃时快速重新登录。
因此在这种情况下下一个请求不会丢失。
如果达到了假定的后端最大队列数,情况就会有所不同,客户端可能会收到错误。因此,为了避免这种情况,没有后端最大队列实现,但您仍然可以使用后端中的规则来实现相同的行为,如下所示:
backend foo
tcp-request content reject if { queue ge 100 }
问题2/
Max Queue 列显示自上次 HAProxy 重新加载以来达到的最大队列大小。
因此 11 是后端达到的最大队列大小。这与服务器的最大队列大小不同,因为如前所述,后端队列和服务器队列是分开的。