У меня вопрос о моем конфиге haproxy:
#---------------------------------------------------------------------
# Global settings
#---------------------------------------------------------------------
global
log 127.0.0.1 syslog emerg
maxconn 4000
quiet
user haproxy
group haproxy
daemon
#---------------------------------------------------------------------
# common defaults that all the 'listen' and 'backend' sections will
# use if not designated in their block
#---------------------------------------------------------------------
defaults
mode http
log global
option abortonclose
option dontlognull
option httpclose
option httplog
option forwardfor
option redispatch
timeout connect 10000 # default 10 second time out if a backend is not found
timeout client 300000 # 5 min timeout for client
timeout server 300000 # 5 min timeout for server
stats enable
listen http_proxy localhost:81
balance roundrobin
option httpchk GET /empty.html
server server1 myip:80 maxconn 15 check inter 10000
server server2 myip:80 maxconn 15 check inter 10000
Как вы видите, все просто, но я немного запутался в том, как работают свойства maxconn.
Есть глобальное и maxconn на сервере, в блоке listen. Я думаю так: глобальное свойство управляет общим количеством соединений, которые haproxy, как служба, будет ставить в очередь или обрабатывать за один раз. Если число превышает это, он либо убивает соединение, либо объединяет в пул какой-нибудь linux сокет? Я понятия не имею, что происходит, если число становится больше 4000.
Затем у вас есть свойство сервера maxconn, установленное на 15. Во-первых, я установил это значение на 15, потому что мой php-fpm, который перенаправляет на отдельный сервер, имеет только столько дочерних процессов, сколько он может использовать, поэтому я убеждаюсь, что я объединяю запросы здесь, а не в php-fpm. Что, как мне кажется, быстрее.
Но вернемся к теме, моя теория об этом числе заключается в том, что каждый сервер в этом блоке будет посылать только 15 соединений за раз. А затем соединения будут ждать открытого сервера. Если бы у меня были включены cookies, соединения ждали бы КОРРЕКТНОГО открытого сервера. Но у меня их нет.
Итак, вопросы:
Спасибо заранее.