4

クライアントからの get および post リクエストに対する haproxy の最適なチューニング オプションを見つけようとしています (Web タイプの取引を閲覧しているユーザーではありません)。

サーバーへの5回の呼び出し、1回のユーザー登録、およびいくつかの更新呼び出しで構成される30kスレッドでjmeterテストを実行します。これらは、パイプラインを介して json データをプッシュします。

これがhaproxyの現在の設定です

global
        log /dev/log local0 #notice
        maxconn 14000
        tune.bufsize 128000
        user netcom
        group netcom
        pidfile /tmp/haproxy.pid
        daemon
        nbproc 7
        #debug
        #quiet

defaults
        log global
        mode http
        ### Options ###
        option httplog
        #option logasap
        option dontlog-normal
        #option dontlognull
        option redispatch
        option httpchk GET /?method=echo HTTP/1.1
        option tcp-smart-accept
        option tcp-smart-connect
        option http-server-close
        #option httpclose
        #option forceclose
        ### load balance strategy ###
        balance leastconn
        #balance roundrobin
        ### Other ###
        retries 5
        maxconn 14000
        backlog 100000
        ### Timeouts ###
        #timeout client          25s
        timeout client          60s
        #timeout connect          5s
        timeout connect         60s
        #timeout server          25s
        timeout server          60s
        timeout tunnel        3600s
        timeout http-keep-alive  1s
        #timeout http-request    15s
        timeout http-request    60s
        #timeout queue           30s
        timeout queue           30s
        timeout tarpit          60s

listen stats *:1212
        stats enable
        stats show-node
        stats show-desc xxxxProxy
        stats realm  xxxxProxy\ Statistics
        stats auth   xxxx:xxxx
        stats refresh 5s
        stats uri /

frontend http-in
        bind *:1111
        bind *:2222 ssl crt /home/netcom/nas/haproxy/xxxx.co.pem verify optional
        acl user_request url_reg method=user.register
        use_backend user_group if user_request
        default_backend other_group

backend user_group
        server n15 xxxx:8080 maxconn 3500 check port 8097 inter 2000
        server n2 xxxx:8080 maxconn 3500 check port 8097 inter 2000
        server n9 xxxx:8080 maxconn 3500 check port 8097 inter 2000
        server n14 xxxx:8080 maxconn 3500 check port 8097 inter 2000
        server n22 xxxx:8080 maxconn 3500 check port 8097 inter 2000
        server n24 xxxx:8080 maxconn 3500 check port 8097 inter 2000
        server n25 xxxx:8080 maxconn 3500 check port 8097 inter 2000

およびcentOS 6のsysctl

net.ipv4.tcp_syncookies = 1
net.ipv4.tcp_synack_retries = 2
net.ipv4.ip_local_port_range = 1024 65535
net.ipv4.tcp_tw_recycle = 1
net.core.wmem_max = 12582912
net.core.rmem_max = 12582912
net.ipv4.tcp_rmem = 20480 174760 25165824
net.ipv4.tcp_wmem = 20480 174760 25165824
net.ipv4.tcp_window_scaling = 1
net.ipv4.tcp_timestamps = 1
net.ipv4.tcp_sack = 1
net.ipv4.tcp_no_metrics_save = 1
net.core.netdev_max_backlog = 10000
# Syn flood
net.ipv4.tcp_max_syn_backlog = 8096
net.core.somaxconn = 8096

誰もが頭のてっぺんから見えるような問題を指摘します。残念ながら、haproxy の専門知識がないので、コミュニティからの助けを求めています。

私が把握する必要があると思われるのは、ボックスが処理できる最大接続を見つける方法です。これは、1 つのギグ ネットワーク上にあり、すべてのバックエンドも 1 つのギグ上にあります。これはhaproxy管理者http://grab.by/r12cのスクリーンショットです。複数のコアで実行しているため、これは1つのコアのスナップショットです。すべてを表示..haproxyがcmdラインから取得している最大接続を取得する方法はありますか?

とにかくこれで作業しているだけで、誰かがいくつかのヒントや指針を与えることができることを願っています.

4

1 に答える 1

3

最初に、haproxy の複数のプロセスを実行する必要はないようです。特に、テストと maxconn の確認に忙しいため、通常はそうしたくないでしょう。シングルコアでは、haproxy は maxconn 設定よりも優れたパフォーマンスを発揮します。

私はSnaptのsysctlを調べましたが、ほとんどのものがあります。これらも追加していることに気付きました-

    net.ipv4.tcp_tw_reuse = 1
    net.ipv4.tcp_fin_timeout = 30

また、leastconn は価値がないので、ラウンドロビンをお勧めします。多くの小さなリクエストで構成される HTTP トラフィックを実行しているためです (正直なところ、依存していると思います)。しかし、これらはとても些細なことです。

于 2014-02-21T08:52:05.407 に答える