2

be1とbe2の2つのバックエンドでhaproxyを設定しています

パスに基づいてルーティングするためにACLを使用しています。

be2がキューの作成を開始すると、be1へのリクエストは悪影響を受けます。通常100ミリ秒かかる場合は2〜3秒かかります(be2になるリクエストに何が起こるかと同じです)。

be1のパフォーマンスに影響を与えることなくbe2をキューに入れる方法はありますか?

ピーク時には、私は約2000 req/sを提供していました。

    global
    log 127.0.0.1   local0
    log 127.0.0.1   local1 notice
    #log loghost    local0 info
    maxconn 2000
    #chroot /usr/share/haproxy
    user haproxy
    group haproxy
    daemon
    #debug
    #quiet
    ulimit-n 65535
    stats socket /var/run/haproxy.sock
    nopoll

defaults
    log global
    mode    http
    option  httplog
    option  dontlognull
    retries 3
    option redispatch
    maxconn 2000
    contimeout  5000
    clitimeout  50000
    srvtimeout  50000

frontend http_in *:80
    option httpclose
    option forwardfor
    acl vt path_beg /route/1
    use_backend be2 if vt
    default_backend be1

backend be1
    balance leastconn
    option httpchk HEAD /redirect/are_you_alive HTTP/1.0
    server 01-2C2P9HI x:80 check inter 3000 rise 2 fall 3 maxconn 500

backend be2
    balance leastconn
    option httpchk HEAD /redirect/are_you_alive HTTP/1.0
    server 01-3TPDP27 x:80 check inter 3000 rise 2 fall 3 maxconn 250
    server 01-3CR0FKC x:80 check inter 3000 rise 2 fall 3 maxconn 250
    server 01-3E9CVMP x:80 check inter 3000 rise 2 fall 3 maxconn 250
    server 01-211LQMA x:80 check inter 3000 rise 2 fall 3 maxconn 250
    server 01-3H974V3 x:80 check inter 3000 rise 2 fall 3 maxconn 250
    server 01-13UCFVO x:80 check inter 3000 rise 2 fall 3 maxconn 250
    server 01-0HPIGGT x:80 check inter 3000 rise 2 fall 3 maxconn 250
    server 01-2LFP88F x:80 check inter 3000 rise 2 fall 3 maxconn 250
    server 01-1TIQBDH x:80 check inter 3000 rise 2 fall 3 maxconn 250
    server 01-2GG2LBB x:80 check inter 3000 rise 2 fall 3 maxconn 250
    server 01-1H5231E x:80 check inter 3000 rise 2 fall 3 maxconn 250
    server 01-0KIOVID x:80 check inter 3000 rise 2 fall 3 maxconn 250

listen stats 0.0.0.0:7474       #Listen on all IP's on port 9000
    mode http
    balance
    timeout client 5000
    timeout connect 4000
    timeout server 30000
    #This is the virtual URL to access the stats page
    stats uri /haproxy_stats        
    #Authentication realm. This can be set to anything. Escape space characters with a backslash.
    stats realm HAProxy\ Statistics 
    #The user/pass you want to use. Change this password!
    stats auth ge:test123
    #This allows you to take down and bring up back end servers.
    #This will produce an error on older versions of HAProxy.
    stats admin if TRUE

昨日どうしてこれに気づかなかったのかわかりませんが、maxconnが2000に設定されているのを見ると...それが私の問題の1つである可能性がありますか?

4

1 に答える 1

2

2つの異なるmaxconn設定があります。1つはフロントエンド用で、もう1つはバックエンド用です。フロントエンドの設定は着信接続を制限するため、バックエンドが使用可能であっても、フロントエンド側でキューに入れられているため、リクエストを取得できません。リクエストがフロントエンドを通過すると、バックエンドのキューイングが行われます。フロントエンドは「デフォルト」セクションのmaxconn設定の影響を受けるため、バックエンドで処理できるようにするため、たとえば4000に増やします。

maxconnは1秒あたりのリクエスト数を制限するのではなく、同時接続を制限することに注意してください。利用可能なスループットを大幅に制限する可能性のあるHTTPキープアライブリクエストがアクティブになっている可能性があります。

于 2012-10-11T15:32:35.240 に答える