Я просто пытаюсь осмыслить очереди / тайм-ауты в HaProxy между фронтендом, бэкэндом и сервером. Я все еще изучаю TCP, сокеты, соединения и т.д., так что простите меня, если какой-либо из этих вопросов не имеет смысла. Я просто ищу подтверждения / разъяснения по некоторым из этих пунктов:
Сам Haproxy имеет Глобальный maxconn
предел (я назову это gmc
). Насколько я понимаю, это gmc
на входящий соединения от клиентов (перенаправленные на внешние интерфейсы).
Тогда каждый интерфейс имеет свой собственный maxconn
установка (я назову это femc
).
Если мой gmc
является 40, и у меня есть два интерфейса, каждый с femc
из 10 и я получаю 50 запросы в сразу.
Вопросы:
backlog
параметр актуален только во внешнем интерфейсе. Продолжая приведенный выше пример, мы добавим по одному бэкэнду для каждого интерфейса, оба с двумя серверами с maxconn
из 2 каждый (smc
) и maxqueue из 1 (smq
).
Таким образом, каждый бэкэнд может обрабатывать 4 одновременных запроса (2 на сервер) и будет ставить в очередь 2 запроса (1 на сервер) всего 6 запросов на бэкэнд.
Вопросы:
Я спрашиваю обо всем этом, потому что у нас есть старый сервер с ОЧЕНЬ разнородными свойствами запроса. Некоторые могут произойти в 10ms
, некоторые 10s
. В настоящее время у нас нет никаких ограничений на подключение к серверу, и мы видим, что некоторые из невыполненных запросов нашего веб-сервера заполняются из-за очень медленных запросов, в то время как другие почти бездействуют. В конечном итоге я пытаюсь немного сгладить это.
Любые ответы на вышеуказанные вопросы будут СУПЕР полезными!