У меня есть вопрос о моей конфигурации 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. Я думаю так: глобальный управляет общим количеством соединений, которые haproxy, как сервис, поставит в очередь или обработает за один раз. Если число становится выше этого, оно либо убивает соединение, либо объединяется в каком-нибудь сокете linux? Я понятия не имею, что произойдет, если число превысит 4000.
Затем у вас установлено свойство сервера maxconn, равное 15. Прежде всего, я установил это значение равным 15, потому что мой php-fpm пересылает его на отдельный сервер, имеет только столько дочерних процессов, которые он может использовать, поэтому я уверен, что я пул запросов здесь, а не в php-fpm. Который я думаю быстрее.
Но вернемся к этой теме, моя теория об этом числе состоит в том, что каждому серверу в этом блоке будет отправляться только 15 соединений одновременно. И тогда соединения будут ждать открытого сервера. Если бы у меня были cookie файлы, соединения ожидали бы ПРАВИЛЬНОГО открытого сервера. Но я не.
Итак, вопросы:
- Что произойдет, если глобальные подключения превысят 4000? Они умирают? Или пул в Linux как-то?
- Связано ли глобальное соединение с соединениями с сервером, кроме того факта, что общее количество соединений с сервером не может быть больше, чем глобальное?
- При вычислении глобальных соединений, не должно ли быть количество соединений, добавленных в разделе сервера, плюс определенный процент для объединения в пул? И, очевидно, у вас есть другие ограничения на соединения, но на самом деле это сколько вы хотите отправить прокси?
Заранее спасибо.