我对我的 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中汇集?
- 全局连接是否与服务器连接相关,除了服务器连接的总数不能大于全局?
- 在计算全局连接时,不应该是在服务器部分添加的连接数量,加上一定百分比的池吗?显然你对连接有其他限制,但实际上你想发送多少个代理?
先感谢您。