내 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로 설정했습니다. 먼저 php-fpm이 별도의 서버에 전달되고 사용할 수있는 자식 프로세스가 너무 많기 때문에 15로 설정했습니다. php-fpm 대신 여기에서 요청을 풀링합니다. 더 빠르다고 생각합니다.
그러나 주제로 돌아가서이 숫자에 대한 나의 이론은이 블록의 각 서버가 한 번에 15 개의 연결 만 전송된다는 것입니다. 그런 다음 연결은 열린 서버를 기다립니다. 쿠키가 켜져 있으면 연결이 올바른 개방형 서버를 기다립니다. 하지만 그렇지 않습니다.
따라서 질문은 다음과 같습니다.
- 글로벌 연결이 4000을 초과하면 어떻게됩니까? 그들은 죽습니까? 아니면 리눅스에서 풀?
- 글로벌 연결보다 더 많은 총 서버 연결 수를 가질 수 없다는 사실 외에는 글로벌 연결이 서버 연결과 관련이 있습니까?
- 글로벌 연결을 파악할 때 서버 섹션에 추가 된 연결 수에 풀링을위한 특정 비율을 더한 것이 아닙니까? 그리고 분명히 연결에 대한 다른 제한이 있지만 실제로 프록시에 보내려는 수는 얼마입니까?
미리 감사드립니다.