首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在HAproxy中,我的websocket连接在50秒后关闭。如何改变它?

问在HAproxy中,我的websocket连接在50秒后关闭。如何改变它?
EN

Stack Overflow用户
提问于 2013-03-26 17:05:36
回答 2查看 14K关注 0票数 5

我正在使用带有tornado的Haproxy作为websocket。我的连接工作正常,如果我直接连接到tornado,但如果我使用以下配置的HAproxy,则连接在50秒后关闭。下面是我的Haproxy配置文件。

代码语言:javascript
复制
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

现在通过使用上面的配置,我的websocket连接在50秒后自动断开。我想做持久连接,那么在HAproxy中有什么方法可以使连接持久吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-03-26 17:45:00

我找到了答案,

我在defaults部分更改了timeout connect 0ms, timeout client 0ms, timeout server 0ms,那么我的连接就是持久连接,因为如果我给出值0,那么它将是无限连接超时值。

我的最终工作配置如下:

代码语言:javascript
复制
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
票数 2
EN

Stack Overflow用户

发布于 2015-09-19 15:26:59

我在默认值部分更改了timeout connect 0ms、timeout client 0MS、timeout server 0ms,则我的连接是持久连接,因为如果我给出值0,则它将是无限连接超时值。

您不应该这样做,因为这些选项也适用于普通的HTTP流量。将timeout connect / client / server设置为适当的值,并对websockets使用timeout tunnel。

当在客户端和服务器之间建立双向连接,并且该连接在两个方向上都保持非活动状态时,隧道超时适用。一旦连接成为隧道,此超时将取代客户端和服务器超时。

(请参阅:http://cbonte.github.io/haproxy-dconv/configuration-1.5.html#timeout%20tunnel)

票数 8
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15633046

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档