我有一个关于我的HAProxy的配置问题:MAXCONN 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中以某种方式池?
- 全局连接是否与服务器连接有关,除了事实上您的服务器连接总数不能超过全局?
- 当确定全局连接时,不应该是服务器部分中累计的连接数量加上一定比例的池化?显然你对连接有其他限制,但是真的有多少你想要发送给代理?
在此先感谢您。
感谢张贴此。 – Tarantula 2012-06-29 03:13:07
我有一个代理约200个后端的haproxy。一旦后端以约300k连续/秒的DDOS编码,所有其他后端就会死亡。在后端服务器上的值为maxconn 2048(在ddos下),我们的haproxy运行良好。谢谢你,你救了我一个晚上:) – hungnv 2012-12-29 13:22:06
威利==神... – cherouvim 2017-11-02 13:50:15