如下图所示,我有一个HAProxy后端2台服务器,它们具有以下设置:
maxconn 64 check inter 5s fastinter 2s downinter 2s
我的问题关于Queue 。 我怎样才能指定后端队列的限制? 为什么Backend在底部显示11的值,当api-1和api-2分别显示22和18 ? 数字11代表我的情况是什么?
问题1 /
正如Willy在这个线程中提到的: https ://www.mail-archive.com/[email protected]/msg21521.html,你不能为后端指定maxqueue,但是你可以为后端服务器指定。
首先让我们清楚一下队列:每个后端队列和每个服务器队列。 连接服务器持久性转到服务器(有问题)队列,其他连接转到后端队列。
当到达服务器maxqueue时,HAProxy文档http://cbonte.github.io/haproxy-dconv/1.7/configuration.html#5.2-maxqueue表示
如果达到此限制,则下一个请求将被重新分派给其他服务器,而不是无限期地等待服务。 这将打破持久性,但可能允许人们在他们尝试连接的服务器正在死亡时快速重新login。
所以下一个请求在这种情况下不会丢失。
如果达到假设的后端maxqueue会有所不同,客户端可能会收到错误。 因此,为了避免这种情况,没有后端maxqueue的实现,但你仍然可以使用后端的规则来实现相同的行为,如下所示:
backend foo tcp-request content reject if { queue ge 100 }
问题2/
最大队列列告诉自上次HAProxy重新加载后达到的最大队列大小。
所以11是你的后端达到的最大队列大小。 这与服务器的最大队列大小不同,因为如前所述,后端队列和服务器队列是分开的。