私の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 接続しか送信されないということです。そして、接続は開いているサーバーを待ちます。Cookie をオンにすると、接続は正しいオープン サーバーを待機します。しかし、私はしません。
質問は次のとおりです。
- グローバル接続が 4000 を超えるとどうなりますか? 彼らは死ぬのですか?または何とか Linux にプールしますか?
- サーバー接続の総数をグローバルよりも大きくすることはできないという事実以外に、グローバル接続はサーバー接続に関連していますか?
- グローバル接続を計算するとき、それはサーバー セクションに追加された接続の量とプール用の特定の割合ではないでしょうか? もちろん、接続には他にも制限がありますが、実際には、プロキシに送信したい数は何ですか?
前もって感謝します。