私はHAProxy1.5をUbuntu14.04(変更済み)で実行しています。 httpおよびhttpsポートでの接続を受け入れます。 2つのバックエンドアプリケーションが永続的な接続を使用してリクエストを処理します。
約2200のクライアント接続を作成すると、haproxyは追加の接続の受け入れを停止します。しかし、私はこのシステムが少なくとも10Kの同時接続を受け入れることを望んでいます。
接続統計は次のとおりです。
# ss -s
TCP: 4119 (estab 4098, closed 6, orphaned 0, synrecv 0, timewait 6/0), ports 0
Transport Total IP IPv6
TCP 4113 4106 7
INET 4128 4117 11
プロセス用に開くファイルの最大数をすでに調整しました。
# cat /proc/1012/limits
Limit Soft Limit Hard Limit Units
Max open files 240017 240017 files
私のhaproxy.configファイル:
global
log /dev/log syslog debug
daemon
user haproxy
group haproxy
maxconn 120000
spread-checks 4
defaults
log global
timeout connect 30000ms
timeout client 300000ms
timeout server 300000ms
frontend http-in
mode http
bind :80
option httplog
option forwardfor
reqadd X-Forwarded-Proto:\ http
default_backend http-routers
frontend https-in
mode http
bind :443 ssl crt /opt/haproxy/cert.pem no-sslv3
option httplog
option forwardfor
option http-server-close
reqadd X-Forwarded-Proto:\ https
default_backend http-routers
frontend ssl-in
mode tcp
bind :4443 ssl crt /opt/haproxy/cert.pem no-sslv3
default_backend tcp-routers
backend http-routers
mode http
balance roundrobin
server node0 192.168.10.2:80 check inter 1000
server node1 192.168.10.2:80 check inter 1000
backend tcp-routers
mode tcp
balance roundrobin
server node0 192.168.10.2:80 check inter 1000
server node1 192.168.10.2:80 check inter 1000
私の知る限り、リッスンブロックmaxconnはグローバルmaxconnとは異なります。グローバルmaxconnを使用すると、haproxyプロセスが処理できる最大接続数を制限できます。
Listen /フロントエンドセクションには独自のmaxconnがあり、リスナーごとの接続数を制限します。したがって、フロントエンドセクションでもmaxconnを設定するか、少なくともデフォルトセクションで設定してみてください。
だからどちらか:
defaults
maxconn 10000
または、フロントエンドごとに設定します。
HAProxyマシンのハードウェア構成は何ですか?コア、RAM、ネットワークインターフェイスなど
多くのHAProxyパフォーマンスの問題が発生しました。ここにいくつかのアイデアがあります:
トラフィックを2つのHAProxyサーバーに分割し、それぞれが他方のバックアップとして機能します。
Raise nbproc は、特定のハードウェアのコア数を反映します。
レイヤー7モードを使用している場合は、スループットを向上させるためにレイヤー4モードにドロップダウンできるかどうかを確認してください。