5

WebSocketにtornadoでHaproxyを使用しています。tornadoに直接接続すると接続は正常に機能しますが、以下の構成でHAproxyを使用すると、50秒後に接続が閉じられます。私のHaproxy設定ファイルは以下のとおりです。

global
        daemon
        maxconn 4032
        pidfile /var/run/haproxy.pid

    defaults
        mode http
        timeout connect 5000ms
        timeout client 50000ms
        timeout server 50000ms
        option  http-server-close
        maxconn 4032

    frontend http-in
        bind *:80
        acl is_websocket hdr_end(host) -i WebSocket
        use_backend servers if is_websocket
        default_backend servers
        option  redispatch
        option  http-server-close
        maxconn  2000
        contimeout  500000
        clitimeout  500000
        srvtimeout  500000
        contimeout  500000        
        timeout contimeout  500000 
        timeout connect  500000

    backend servers
        server server1 127.0.0.1:8886 maxconn 4032

上記の設定を使用すると、50秒後にWebSocket接続が自動的に失われます。持続的接続をしたいので、HAproxyで接続を持続的にする方法はありますか?

4

2 に答える 2

8

デフォルトセクションでタイムアウト接続0ms、タイムアウトクライアント0ms、タイムアウトサーバー0msを変更した場合、値0を指定すると無限の接続タイムアウト値になるため、接続は持続的接続になります。

これらのオプションは通常のHTTPトラフィックにも適用されるため、これを行うべきではありません。タイムアウト接続/クライアント/サーバーを適切な値に設定しtimeout tunnel、WebSocketに使用します。

トンネルタイムアウトは、クライアントとサーバーの間に双方向接続が確立され、接続が両方向で非アクティブのままである場合に適用されます。このタイムアウトは、接続がトンネルになると、クライアントとサーバーの両方のタイムアウトに優先します。

http://cbonte.github.io/haproxy-dconv/configuration-1.5.html#timeout%20tunnelを参照してください)

于 2015-09-19T07:26:58.690 に答える
2

私は答えを見つけました、

セクションを変更timeout connect 0ms, timeout client 0ms, timeout server 0msしたdefaultsところ、接続は持続的接続になりました。値0を指定すると、接続タイムアウト値が無限になるためです。

私の最終的な動作構成は以下のとおりです。

global
        daemon
        maxconn 4032
        pidfile /var/run/haproxy.pid

    defaults
        mode http
        timeout connect 0ms
        timeout client 0ms
        timeout server 0ms
        option  http-server-close
        maxconn 4032

    frontend http-in
        bind *:80
        acl is_websocket hdr_end(host) -i WebSocket
        use_backend servers if is_websocket
        default_backend servers
        option  redispatch
        option  http-server-close
        maxconn  2000
        contimeout  500000
        clitimeout  500000
        srvtimeout  500000
        contimeout  500000        
        timeout contimeout  500000 
        timeout connect  500000
        timeout client  500000

    backend servers
        server server1 127.0.0.1:8886 maxconn 4032
于 2013-03-26T09:45:00.400 に答える