HAProxy 关闭长期存在的 TCP 连接,忽略 TCP keepalive

2024-01-11

我已经配置了 HAProxy(1.5.4,但我也尝试了 1.5.14),以在 TCP 模式下平衡两台在 5672 端口上公开 AMQP 协议(​​WSO2 消息代理)的服务器。 客户端通过 HAProxy 创建并使用与 AMQP 服务器的永久连接。

我更改了客户端和服务器 TCP keepalive 超时,设置 net.ipv4.tcp_keepalive_time=120 (CentOS 7)。

在 HAProxy 中,我将客户端/服务器超时设置为 200 秒(> 120 秒的 keepalive 数据包)并使用选项 clitcpka。

然后我启动了wireshark并嗅探了所有tcp流量:在客户端发出最后一个请求后,tcp keepalived数据包会在120秒后定期发送,但在客户端发出最后一个请求后200秒后,连接将关闭(因此忽略keepalived 数据包)。

配置如下:

haproxy.conf

global
    log 127.0.0.1   local3
    maxconn 4096
    user haproxy
    group haproxy
    daemon
    debug

listen messagebroker_balancer 172.19.19.91:5672
    mode tcp
    log global
    retries 3
    timeout connect 5000ms
    option redispatch
    timeout client 200000ms
    timeout server 200000ms
    option tcplog
    option clitcpka 
    balance leastconn
    server s1 172.19.19.79:5672 check inter 5s rise 2 fall 3
    server s2 172.19.19.80:5672 check inter 5s rise 2 fall 3

TCP keepalive 位于传输层,仅用于在连接上进行一些流量,因此中间的像数据包过滤器这样的系统不会丢失任何状态,并且终端系统可以注意到与另一端的连接是否中断(可能是因为某些东西崩溃或网络电缆损坏)。

TCP 保持活动状态与您已明确设置为 200 秒的应用程序级别空闲超时无关:

timeout client 200000ms
timeout server 200000ms

如果连接空闲,即没有传输数据,则会触发此超时。 TCP keepalive 不传输任何数据,这些数据包的有效负载为空。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

HAProxy 关闭长期存在的 TCP 连接,忽略 TCP keepalive 的相关文章

  • Android TCP 连接最佳实践

    我正在开发一个需要 TCP 连接到 TCP 服务器的 Android 应用程序 用 Node js 编写 我的 Android TCP 客户端正在工作 可以来回发送消息 我的具体问题是 在 Android 中处理与服务器的 TCP 连接的最
  • 是否可以通过 TCP 连接到正在侦听 3G 网络端口的 iPhone?

    我正在开发一个严重依赖 P2P 的应用程序 但我目前没有任何 SIM 卡可供实验 因此我正在 wifi 网络上进行测试 我想知道 3G 网络上的 iPhone 是否可以连接以及是否需要穿越 NAT 设备 您位于提供商的路由器后面 您的 IP
  • Socket ReceiveAsync 合并数据包

    我打算通过套接字接收数据包 但由于它们是从发送方以高频率发送的 因此其中许多数据包被打包成一个byte array SocketAsyncEventArgs Buffer然后保存多个数据包 即使它们是单独发送的 使用验证wireshark
  • 在 C# 中通过 TCP 发送 C 结构体

    我正在编写一个程序 通过 TCP 与一台设备的管理界面进行交互 问题是 设备的文档是用C写的 而我写的程序是用C 写的 我的问题是 文档指定 通信基于基于C结构的API缓冲区 再多的谷歌搜索似乎也无法让我找到这个 API 或如何通过 TCP
  • 如何调试 Heroku 请求超时错误

    我如何找出导致 heroku 上 h12 超时错误的原因 它在不同的页面 控制器上随机发生 这是我从日志中得到的错误 Processing by UsersController new as HTML 2013 08 15T13 08 54
  • 使用 sql helper(Microsoft.ApplicationBlocks.Data) 时出现超时问题

    我在处理长sql查询时遇到超时问题 长查询超时的数据集是 static public DataSet Getxxxx Guid xxxx DataSet ds SqlHelper ExecuteDataset ConnectionStrin
  • crontab 作业的 STDOUT 和 STDERR 输出在哪里

    有谁知道 CentOS 中正常 crontab 作业输出的 STDOUT 和 STDERR 在哪里 我检查了 var log cron文件 但它只记录了 cron 作业执行的时间和命令 没有找到 STDOUT 或 STDERR 内容 看看
  • Go TCP 读取是非阻塞的

    我正在尝试用 Go 创建服务器和客户端 我已经成功地与服务器和客户端进行通信 但我遇到的问题是golang中的TCP读取是非阻塞的 我想知道 golang 中的读取是否有可能像 C 中的读取一样阻塞 谢谢 EDIT 这是服务器的源代码 fu
  • 超时设置为无限时间时出现超时异常

    在我的 C NET 3 5 应用程序中 我使用 CastleProject ActiveRecord 而不是 NHibernate 这是使用 MS SQL Server 2008 的桌面应用程序 我已将 ADO 命令超时设置为 0 以防止批
  • Go 中带有 TTL 选项的映射

    我需要构建这样的数据结构 map string SomeType 但它必须将值存储大约 10 分钟 然后从内存中清除 第二个条件是记录数量 它必须是巨大的 该数据结构必须至少添加每秒 2 5K 条记录 那么 Go 中最正确的实现方法是什么
  • 无法使用 git 克隆任何存储库

    我尝试克隆一些存储库 但总是遇到相同的错误 我在哪里可以找到有关此错误的更多信息 错误日志文件或类似的文件 或者也许有人知道可能出了什么问题 git clone http github com creationix nvm git nvm
  • Linux环境下串口数据转换为TCP/IP

    我需要从Linux系统的串口获取数据并将其转换为TCP IP发送到服务器 这很难做到吗 我有一些基本的编程经验 但对 Linux 的经验不多 有没有开源应用程序可以做到这一点 在 Linux 中您不需要编写程序来执行此操作 只是pipe h
  • Python套接字模块:Recv()数据响应被切断

    解释 我目前正在尝试使用 python 脚本控制智能电源板 为了实现这一点 我使用了带有套接字模块的 TCP 连接 大约 75 的情况下 我会得到我正在寻找的响应 数据 并且一切都运行良好 然而 大约 25 的情况下 响应会以完全相同的长度
  • Powershell/PowerCLI 循环、超时和退出

    以下是场景 我通过 Powershell PowerCLI VMwares Powershell 模块 远程启动虚拟机 一旦虚拟机启动 我将针对虚拟机运行一系列 cmdlet 目前我有这段代码 Start VM my VM Name run
  • 视频流上的 TCP 与 UDP

    我刚从网络编程考试回来 他们问我们的问题之一是 如果您要传输视频 您会使用 TCP 还是 UDP 请解释一下存储视频和实时视频流 对于这个问题 他们只是希望得到一个简短的答案 TCP 用于存储视频 UDP 用于实时视频 但我在回家的路上想到
  • Mac OS X 上的超时命令?

    Mac OSx 上的超时命令有替代方法吗 基本要求是我能够在指定的时间内运行命令 e g timeout 10 ping google com 该程序在 Linux 上运行 ping 10 秒 您可以使用 brew install core
  • git-http-backend 与 AuthzUnixGroup 无法正常工作

    我正在尝试在 CentOS 6 机器上的 Apache 2 2 上设置一个 git 存储库 并安装了 git 我尝试过许多不同的方向 但我却不知所措 我目前的情况包括能够clone正常 但完全无法推动 似乎我无法使身份验证位正常工作 因为我
  • AMQPRuntimeException:读取数据时出错。收到 0 而不是预期的 7 字节

    它曾经有效 但现在不再有效了 我正在使用 php amqplib 和 RabbitMQ 当我尝试创建新的 AMQP 连接时 connection new AMQPConnection localhost 5672 username pass
  • HAProxy - 如果第一台机器返回 404,则从第二台机器提供 URL

    我遇到过这样的情况 网站的一部分 某些 URL 路径 由一台后端服务器提供服务 而所有其他 URL 则由 HAProxy 中的不同默认后端提供服务 现在 由于应用程序逻辑的编写方式 可以在两台物理服务器计算机中的任意一台上的同一路径上创建要
  • 缺少单独的调试信息,请使用: debuginfo-install glibc-2.12-1.47.el6_2.9.i686 libgcc-4.4.6-3.el6.i686 libstdc++-4.4.6-3.el6.i686

    CentOS 6 2 GNU gdb GDB 红帽企业 Linux 7 2 50 el6 当我使用 GDB 调试简单的 C 代码时 我看到以下警告 Missing separate debuginfos use debuginfo inst

随机推荐

  • Jenkins 管道:构建步骤的返回值

    在 Jenkins 的集成管道中 我使用以下命令并行触发不同的构建构建步骤 https jenkins io doc pipeline steps pipeline build step 如下 stage trigger all build
  • 如何在迁移触发器中设置 Cognito 组

    我目前正在使用 Cognito 触发器 用户迁移 构建从 AWS 用户池到另一个用户池的迁移解决方案 我想在迁移期间设置一个组 但我无法执行此操作 因为在整个上下文完成之前尚未创建用户 我该如何解决这个问题 我不想创建 PostAuth l
  • 如何在 ASP.NET Core 2.0 中实现 machineKey

    在 ASP NET 非核心 中 我通常会在 web config 中添加一个 machineKey 以便我可以在本地计算机而不是服务器上执行一些功能 以便数据库 回调操作将使用相同的密钥 例如
  • 查找仅在 R 中的一行中出现的变量

    使用 BASE R 我想知道如何回答以下问题 有没有什么价值X or Y仅发生在一行中而不发生在其他行中 如果是 请出示我的期望的输出 below f lt data frame id c rep AA 4 rep BB 2 rep CC
  • (Symfony 4) 如何从 PHP 代码中访问 Liip Imagine 包?

    我希望能够上传一个文件 并从中创建 3 个缩略图 并将所有内容存储在 S3 服务器上 我的 liip LiipImagineBundle 设置如下 liip 想象 configure resolvers resolvers setup th
  • CMake 中的 Makefile 等效项

    我刚刚开始使用CMake 已经不到一周了 我已经编写了一个 Makefile 并且正在尝试在 CMake 中编写其等效项 我不知道应该在 CMake 中为给定 Makefile 中的每个语句使用哪些命令 我该如何开始 有什么地方可以找到这方
  • Django 结合 __unaccent 和 __search 查找

    所以我正在尝试使用 unaccent and search在同一模型过滤器中 但这样做时收到错误 我正在尝试使用术语 Pokemon 与术语 Pok mon 匹配来创建一个过滤器 注意 Game objects filter title u
  • JPA 2.1 中的 @ConstructorResult 映射无法与 Hibernate 4.3.5.Final 一起正常工作

    我尝试将本机查询映射到非实体类 我有以下实体 Entity Table name Groups SqlResultSetMapping name groupList classes ConstructorResult targetClass
  • 使用节点实现重新填充堆栈

    在我把它全部取下来打印出来后 我很难重新填充堆栈 我正在使用节点实现 所以我认为这个事实让我感到困惑 任何建议将不胜感激 谢谢 这是我原来的 stack print Function to print Gumball info field
  • 使用隐式/显式转换运算符是否违反单一职责模式而支持 DRY?

    我需要在这两个类之间进行转换 并且想要保持 DRY 但不违反单一职责模式 public class Person public string Name get set public int ID get set public class P
  • 模块内部的参考控制器

    我在模块内定义了一个控制器 angular module myModule controller MyCtrl function scope scope property myproperty 部分内容包含在主 html 中 如下所示 di
  • 詹金斯第一次访问时非常慢

    清晨第一次访问詹金斯非常慢 如果我们重新启动 Jenkins 服务器 也会发生这种情况 因此第一个访问 jenkins 的开发人员有时需要等待长达 3 分钟 我们认为这是构建负载的问题 因此 我们将所有构建工作转移给詹金斯奴隶 但问题并没有
  • 与多个项目共享 nlog 配置以及正确的线程安全方式来全部写入同一日志文件?

    我的程序由一个 EXE 和 6 个 DLL 组成 当然每个人都引用每个人 我目前有一个粗略的静态日志记录类 Logger 它位于它自己的 DLL Logger dll 中 我将其添加为每个的引用我的项目并使用 但我没有重新发明轮子 而是希望
  • 从 Angular 表达式访问窗口

    根据开发者指南 http docs angularjs org guide expression我应该能够从 Angular 表达式内部访问浏览器窗口 window 与 JavaScript 不同 JavaScript 的名称默认为全局窗口
  • 使用 PDO 准备和绑定语句的条件查询

    我正在将所有查询从 mysql 转换为 PDO 在这个过程中我发现了一个条件查询 如下所示 if isset parameters searchTerm where And title LIKE parameters searchTerm
  • 如何以编程方式从开始到结束缓慢滚动 UIScrollView

    我有一个水平 UIScrollview 显示大约 10 张图像 我知道我们必须使用scrollRectToVisible 方法以编程方式移动滚动视图 但我正在寻找的是从滚动视图的开始到结束缓慢滚动滚动视图 1 秒内 5 个像素 我看过一些页
  • 将数组定义为类的属性时出现语法错误

    public aSettings array BindHost gt 127 0 0 1 Port gt 9123 MaxFileSize gt 5 1024 1024 unexpected here UploadedURL gt http
  • System.out.println(object) 的输出

    我想知道当我执行以下操作时 输出到底是什么 class Data int a 5 class Main public static void main String args data dObj new data System out pr
  • VS2010 中的 JavaScript Intellisense 速度极慢且占用内存

    我在 VS2010 中的 Intellisense 中遇到两个问题 我们的项目非常大 它由数百个 js 文件组成 其中包含数十万行代码 使用 VS2010 只需 5 10 分钟后 内存使用量就可以轻松攀升到 1GB 以上 这会导致速度显着减
  • HAProxy 关闭长期存在的 TCP 连接,忽略 TCP keepalive

    我已经配置了 HAProxy 1 5 4 但我也尝试了 1 5 14 以在 TCP 模式下平衡两台在 5672 端口上公开 AMQP 协议 WSO2 消息代理 的服务器 客户端通过 HAProxy 创建并使用与 AMQP 服务器的永久连接