AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / server / 问题 / 789322
Accepted
Alexander Farber
Alexander Farber
Asked: 2016-07-13 02:06:17 +0800 CST2016-07-13 02:06:17 +0800 CST 2016-07-13 02:06:17 +0800 CST

增加 WebSocket 连接到特定 URL 的客户端超时

  • 772

在 CentOS 7 Linux 上,我在 Jetty 9 前面成功地使用了 HAProxy 1.5.14,通过 FastCGI 为 Wordpress 站点提供服务。

/ws/它工作得非常好,但是对于同一网站上的 HTML5/WebSocket 游戏来说,WebSocket 连接到URL 需要更高的客户端和服务器超时。

所以我将/etc/haproxy/haproxy.cfg文件修改为以下内容:

global
    chroot      /var/lib/haproxy
    pidfile     /var/run/haproxy.pid
    maxconn     4000
    user        haproxy
    group       haproxy
    daemon
    tune.ssl.default-dh-param 2048

defaults
    mode                    http
    log                     global
    option                  httplog
    option                  dontlognull
    option http-server-close
    option forwardfor       except 127.0.0.0/8
    option                  redispatch
    retries                 3
    timeout http-request    10s
    timeout queue           1m
    timeout connect         10s
    timeout client          1m    # HOW TO INCREASE FOR /ws/ ?
    timeout server          1m    # HOW TO INCREASE FOR /ws/ ?
    timeout http-keep-alive 10s
    timeout check           10s
    maxconn                 3000

frontend public
    bind 144.76.184.151:80
    bind 144.76.184.151:443 ssl crt /etc/pki/tls/certs/slova.de.pem

    acl websocket_url path_end /ws/
    #timeout client 60m if websocket_url   # SYNTAX ERROR
    use_backend ws-jetty if websocket_url
    default_backend jetty

backend jetty
    server domain 127.0.0.1:8080 send-proxy

backend ws-jetty
    timeout client 60m    # IS IGNORED HERE
    timeout server 60m
    server domain 127.0.0.1:8080 send-proxy

当我设置

    timeout client 60m
    timeout server 60m

在defaults部分中,我的 WebSocket 游戏可以根据需要运行,但我不希望通常的 HTTP 连接有 1 小时的超时。

当我将该部分放入backend ws-jetty然后打印警告时,该超时客户端不是后端选项,因此被忽略。

当我尝试该行时timeout client 60m if websocket_url,会报告语法错误。

timeout haproxy websocket
  • 1 1 个回答
  • 7836 Views

1 个回答

  • Voted
  1. Best Answer
    Michael - sqlbot
    2016-07-13T04:24:02+08:002016-07-13T04:24:02+08:00

    如果某些长寿命会话与短寿命会话混合在一​​起(例如:WebSocket 和 HTTP),则值得考虑timeout tunnel覆盖timeout client和timeout server用于隧道以及timeout client-fin半关闭连接。

    http://cbonte.github.io/haproxy-dconv/configuration-1.5.html#4.2-timeout%20client

    何时timeout tunnel在连接上处于活动状态 - 这对于 Web 套接字会自动发生,因为一旦连接升级到 Web 套接字,HTTP 逻辑就会分离 - 大多数其他超时不再为该连接触发。

    请注意,这是一个空闲计时器,而不是会话计时器。计时器由来自任一方向的流量重置。您可以将其应用于后端或默认部分。它应该只在适当的时候由 HAProxy 实际使用,但是将它放在需要它的特定后端可以说是最佳实践。

    • 5

相关问题

  • jdbc4 通信异常

  • 远程桌面到 Vista 不工作

  • 使用 SBS 2003 SP2 作为 LAN 网关会导致大量 HTTP 超时

  • 尝试挂载 NFS 文件系统时出现“挂载:RPC:超时”

  • ssh 会话空闲超时

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    新安装后 postgres 的默认超级用户用户名/密码是什么?

    • 5 个回答
  • Marko Smith

    SFTP 使用什么端口?

    • 6 个回答
  • Marko Smith

    命令行列出 Windows Active Directory 组中的用户?

    • 9 个回答
  • Marko Smith

    什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同?

    • 3 个回答
  • Marko Smith

    如何确定bash变量是否为空?

    • 15 个回答
  • Martin Hope
    Tom Feiner 如何按大小对 du -h 输出进行排序 2009-02-26 05:42:42 +0800 CST
  • Martin Hope
    Noah Goodrich 什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同? 2009-05-19 18:24:42 +0800 CST
  • Martin Hope
    Brent 如何确定bash变量是否为空? 2009-05-13 09:54:48 +0800 CST
  • Martin Hope
    cletus 您如何找到在 Windows 中打开文件的进程? 2009-05-01 16:47:16 +0800 CST

热门标签

linux nginx windows networking ubuntu domain-name-system amazon-web-services active-directory apache-2.4 ssh

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve