Назад | Перейти на главную страницу

Объяснение значений внутренней очереди страницы статистики HAProxy

Как показано на изображении ниже, у меня есть бэкэнд HAProxy с двумя серверами, которые имеют следующие настройки:

maxconn 64 check inter 5s fastinter 2s downinter 2s

Мой вопрос касается Queue столбец. Как я могу указать лимит внутренней очереди? И почему Backend внизу покажите значение 11 когда api-1 и api-2 шоу 22 и 18 соответственно? Что означает число 11 представляете в моем случае?

Вопрос 1/
Как упоминал Вилли в этой теме: https://www.mail-archive.com/haproxy@formilux.org/msg21521.html , вы не можете указать maxqueue для бэкэнда, но можете сделать это для бэкэнд-серверов.

Сначала давайте проясним, что касается очередей: существует очередь для каждого сервера и очередь для сервера. Соединения с персистентностью сервера отправляются в очередь сервера (рассматриваемого), а другие соединения переходят в очередь бэкэнда.

Когда достигается максимальная очередь сервера, документ HAProxy http://cbonte.github.io/haproxy-dconv/1.7/configuration.html#5.2-maxqueue Говорит, что

Если этот предел будет достигнут, следующие запросы будут повторно отправляться на другие серверы вместо того, чтобы бесконечно ждать обслуживания. Это нарушит постоянство, но может позволить людям быстро повторно войти в систему, когда сервер, к которому они пытаются подключиться, умирает.

Так что следующие запросы в этом случае не будут потеряны.

Было бы иначе, если бы достигнута предполагаемая максимальная очередь бэкенда, и клиенты могут получить взамен ошибки. Таким образом, чтобы избежать этого, не существует реализации maxqueue серверной части, но вы все равно можете добиться того же поведения, используя правило в серверной части, например:

backend foo
      tcp-request content reject if { queue ge 100 }

Вопрос 2/
В столбце Max Queue указан максимальный размер очереди, достигнутый с момента последней перезагрузки HAProxy.
Итак, 11 - это максимальный размер очереди, достигнутый вашим сервером. Это отличается от максимального размера очереди ваших серверов, потому что, как было сказано ранее, внутренняя очередь и очереди серверов разделены.