私の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プロパティの動作について少し混乱しています。
サーバーのlistenブロックには、グローバルなものとmaxconnがあります。私の考えはこれです。グローバル接続は、サービスとしてhaproxyが一度にキューまたは処理する接続の総数を管理します。数がそれを超えると、接続が強制終了されるか、Linuxソケットにプールされますか?数が4000を超えるとどうなるかわかりません。
次に、サーバーのmaxconnプロパティを15に設定します。最初に、これを15に設定します。これは、php-fpmが別のサーバーに転送しているため、使用できる子プロセスが非常に多いため、 php-fpmではなく、ここにリクエストをプールします。どちらが速いと思います。
しかし、話題に戻って、この数についての私の理論は、このブロックの各サーバーは一度に15接続しか送信されないということです。そして、接続は開いているサーバーを待ちます。クッキーをオンにしていた場合、接続は正しいオープンサーバーを待機します。しかし、私はしません。
だから質問は:
- グローバル接続が4000を超えるとどうなりますか?彼らは死ぬのですか?または、どういうわけかLinuxにプールしますか?
- グローバル接続はサーバー接続に関連していますか?それは、サーバー接続の総数をグローバルより多くすることができないという事実以外にありますか?
- グローバル接続を把握する場合、サーバーセクションで追加された接続の数に、プールの特定の割合を加えたものにすべきではありませんか?そして、明らかに接続に他の制限がありますが、実際にはプロキシに送信する数はいくつですか?
前もって感謝します。