haproxy 全局 maxconn 和服务器 maxconn 的区别

2024-01-05

我对我的 haproxy 配置有疑问:

#---------------------------------------------------------------------
# Global settings
#---------------------------------------------------------------------
global
    log         127.0.0.1 syslog emerg
    maxconn     4000
    quiet
    user        haproxy
    group       haproxy
    daemon
#---------------------------------------------------------------------
# common defaults that all the 'listen' and 'backend' sections will 
# use if not designated in their block
#---------------------------------------------------------------------
defaults
    mode        http
    log         global
    option      abortonclose
    option      dontlognull
    option      httpclose
    option      httplog
    option      forwardfor
    option      redispatch
    timeout connect 10000 # default 10 second time out if a backend is not found
    timeout client 300000 # 5 min timeout for client
    timeout server 300000 # 5 min timeout for server
    stats       enable

listen  http_proxy  localhost:81

    balance     roundrobin
    option      httpchk GET /empty.html
    server      server1 myip:80 maxconn 15 check inter 10000
    server      server2 myip:80 maxconn 15 check inter 10000

正如您所看到的,它很简单,但我对 maxconn 属性的工作原理有点困惑。

服务器上的监听块中有全局连接和最大连接。我的想法是这样的:全局管理着 haproxy 作为一项服务一次性排队或处理的连接总数。如果数字超过这个值,它要么终止连接,要么在某个 linux 套接字中池化?我不知道如果这个数字超过 4000 会发生什么。

然后你将服务器 maxconn 属性设置为 15。首先,我将其设置为 15,因为我的 php-fpm,这是转发到单独的服务器上,只有这么多的子进程可以使用,所以我确保我在这里汇集请求,而不是在 php-fpm 中。我认为哪个更快。

但回到这个主题,我关于这个数字的理论是这个块中的每个服务器一次只会发送 15 个连接。然后连接将等待打开的服务器。如果我打开了cookie,连接将等待正确的开放服务器。但我不这么认为。

所以问题是:

  1. 如果全球连接数超过 4000 会发生什么?他们会死吗?或者 Linux 中的池以某种方式?
  2. 除了服务器连接总数不能大于全局连接之外,全局连接是否与服务器连接相关?
  3. 在算出全局连接数的时候,不应该是服务器部分加起来的连接数,加上一定的百分比用于池化吗?显然,您对连接还有其他限制,但实际上是您想发送给代理的数量?

先感谢您。


威利通过电子邮件给了我答复。我想我会分享它。他的答案是粗体的。

我对我的 haproxy 配置有疑问:

   #---------------------------------------------------------------------
   # Global settings
   #---------------------------------------------------------------------
   global
       log         127.0.0.1 syslog emerg
       maxconn     4000
       quiet
       user        haproxy
       group       haproxy
       daemon
   #---------------------------------------------------------------------
   # common defaults that all the 'listen' and 'backend' sections will 
   # use if not designated in their block
   #---------------------------------------------------------------------
   defaults
       mode        http
       log         global
       option      abortonclose
       option      dontlognull
       option      httpclose
       option      httplog
       option      forwardfor
       option      redispatch
       timeout connect 10000 # default 10 second time out if a backend is not found
       timeout client 300000 # 5 min timeout for client
       timeout server 300000 # 5 min timeout for server
       stats       enable

   listen  http_proxy  localhost:81

       balance     roundrobin
       option      httpchk GET /empty.html
       server      server1 myip:80 maxconn 15 check inter 10000
       server      server2 myip:80 maxconn 15 check inter 10000

正如你所看到的,它很简单,但我对如何 maxconn 属性有效。

服务器上的监听块中有全局连接和最大连接。

监听块中还有另一个默认值 就像2000年一样。

我的想法是这样的:全局管理连接总数 haproxy 作为一项服务,将同时进行查询或处理。

正确的。这是每个进程的最大并发连接数。

如果数量 超过这个值,它要么终止连接,要么在某些 linux 中进行池化 插座?

后者,它只是停止接受新连接,并且它们保留在 内核中的套接字队列。确定可排队套接字的数量 通过 (net.core.somaxconn, net.ipv4.tcp_max_syn_backlog 的最小值,以及 监听块的 maxconn)。

我不知道如果这个数字超过 4000 会发生什么。

多余的连接会等待另一个连接完成后再进行处理 公认。然而,只要内核的队列没有饱和, 客户端甚至没有注意到这一点,因为连接已在 TCP级别但不被处理。所以客户只会注意到一些延迟 处理请求。 但在实践中,监听块的 maxconn 更为重要, 因为默认情况下它比全局小。聆听的最大康恩 限制每个侦听器的连接数。一般来说,明智的做法是 将其配置为您想要的服务连接数, 并将全局 maxconn 配置为最大连接数 你让 haproxy 进程处理。当你只有一项服务时, 两者可以设置为相同的值。但当你有很多服务时, 你可以很容易地理解它会产生巨大的差异,因为你不知道 想要一个服务来获取所有连接并防止 其他的工作。

然后将服务器 maxconn 属性设置为 15。首先,我将其设置为 15 因为我的 php-fpm,这是转发到一个单独的服务器上,只有 它可以使用如此多的子进程,所以我确保我正在汇集请求 在这里,而不是在 php-fpm 中。我认为哪个更快。

是的,它不仅应该更快,而且允许 haproxy 找到另一个 尽可能使用可用的服务器,并且它还允许它杀死 如果客户端在连接之前点击“停止”,则请求在队列中 转发到服务器。

但回到主题,我关于这个数字的理论是这个中的每个服务器 块一次只会发送 15 个连接。然后是连接 将等待开放的服务器。如果我打开了cookie,连接就会等待 对于正确的开放服务器。但我不这么认为。

正是这个原理。有一个每个代理队列和一个每个服务器队列 队列。带有持久性cookie的连接进入服务器队列并 其他连接进入代理队列。但是,因为在你的情况下没有 配置 cookie 后,所有连接都会进入代理队列。你可以看 如果需要的话,可以在 haproxy 源中的图表 doc/queuing.fig 中进行解释 如何/在哪里做出决定。

所以问题是:

  1. 如果全球连接数超过 4000 会发生什么?他们会死吗?或者 Linux 中的池以某种方式?

    它们在 Linux 中排队。一旦你压垮了内核的队列,那么它们就会 放入内核中。

  2. 全局连接是否与服务器连接相关,除了 事实上,服务器连接总数不能大于 全球的?

    不,全局和服务器连接设置是独立的。

  3. 在计算全局连接时,不应该是数量 在服务器部分添加的连接数,加上一定的百分比 汇集?显然你对连接还有其他限制,但是 实际上您想发送多少个给代理?

    你做对了。如果你的服务器的响应时间很短,那就没有什么 将数千个连接排队以一次只服务几个连接是错误的, 因为它大大减少了请求处理时间。几乎, 如今在千兆位上建立连接大约需要 5 微秒 局域网。所以让 haproxy 分配连接是很有意义的 尽可能快地从队列到具有非常小的 maxconn 的服务器。 我记得一个游戏网站排队的并发连接数超过 30000 每台服务器的队列为 30 个!这是一个 apache 服务器,并且 apache 在少量连接时比在大量连接时要快得多 数字。但为此你确实需要一个快速的服务器,因为你不需要 想让所有客户端排队等待连接槽,因为 例如,服务器正在等待数据库。 另外一个非常有效的方法是专用服务器。如果您的网站 有很多静态,您可以将静态请求定向到服务器池 (或缓存),这样您就不会在它们上排队静态请求,并且 静态请求不会占用昂贵的连接槽。 希望这有帮助, 威利

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

haproxy 全局 maxconn 和服务器 maxconn 的区别 的相关文章

  • 14.haproxy+keepalived负载均衡和高可用

    haproxy 43 keepalived负载均衡和高可用 概述 多个rabbitmq服务形成集群 xff0c 由haproxy来做负载均衡 xff0c haproxy会暴露出来一个端口 xff0c 客户端可以通过haproxy所在的服务器
  • HAProxy--理论--07--HAProxy监控页面

    HAProxy 理论 07 HAProxy监控页面 1 页面 2 说明 2 1 Queue cur 当前队列的请求数量 Max 当前队列最大的请求数量 Limit 队列的限制数量 2 2 Session rate Cur 每秒会话连接数量
  • 修改HAProxy Lua库路径

    我正在尝试从 HAProxy 加载 Lua 脚本 在 Lua 脚本中 以下行导致错误 local http require socket http 最初我收集自journalctl xe输出表明该库未安装 我安装它使用luarocks in
  • WebSocket 的 API 网关

    我的 websocket 应用程序需要一个 API 网关 分析并识别来自某些IP的异常请求 配额和速率限制 统计数据 免费或商业 性能稳定 我的WebSocket的子协议是WAMP 所以恐怕没有现有的产品可以完成这项工作 我打算开发一个并假
  • 使用haproxy的http请求到https请求

    我有一种情况 我想使用 haproxy 将所有 http 请求重定向到 https 请求 假设我有一台安装了 haproxy 的服务器 x 和一台运行实际服务的服务器 y 使用 ssl 现在 我希望 haproxy 接受 http 请求并通
  • HAProxy 无法启动,无法绑定 UNIX 套接字 [/run/haproxy/admin.sock]

    我尝试使用 空 配置文件启动 haproxy 版本 1 5 8 2014 10 31 我得到 user server sudo service haproxy start Starting haproxy haproxy ALERT 126
  • haproxy 全局 maxconn 和服务器 maxconn 的区别

    我对我的 haproxy 配置有疑问 Global settings global log 127 0 0 1 syslog emerg maxconn 4000 quiet user haproxy group haproxy daemo
  • HAProxy 关闭长期存在的 TCP 连接,忽略 TCP keepalive

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

    希望有人能指出我正确的方向 我正在尝试将 HAProxy 配置为使用环境变量 来自操作系统 作为 acl 语句的一部分 因此 如果在启动或重新加载 HAProxy 时将环境变量设置为 true 则将授予访问权限 如果环境变量设置为 fals
  • HAProxy:带有重定向的 hdr_dom(host)

    我们有几个 haproxy 配置大部分运行良好 在我们的场景中 我们只是根据域名路由请求 以下是一个域 drawmessage com 的示例 frontend http bind 80 redirect prefix http app d
  • 使用 Iperf 进行 haproxy 的 udp 流量

    我正在使用 Docker 容器开展我的个人项目 关于 Haproxy 的 性能评估 我正在使用 Python 进行编程 并使用 iperf 来生成流量 我创建了几个 Docker 容器作为客户端和服务器 客户端应该通过充当负载均衡器的 Ha
  • HAProxy - 配置 HTTP 前端以侦听多个端口

    我的 HAProxy 配置中有一个 HAProxy HTTP 前端 如下所示 frontend myaddress net 10098 bind 80 8080 mode http log global option http server
  • 基于 HAProxy 中的上下文路径动态路由到后端

    我有具体要求 根据我的上下文路径 我必须通过 HAProxy 将流量重定向到不同的服务器 端口 我已经通过 ACL 中的 path beg 实现了相同的效果 下面是配置 use backend a1 if path beg a1 use b
  • Haproxy 性能调整?

    我们正在尝试为来自客户端 而不是浏览网络交易类型的用户 的 get 和 post 请求找到 haproxy 的最佳调整选项 使用 30k 线程运行 jmeter 测试 其中包括 5 个对服务器的调用 1 个用户注册和一些更新调用 这些通过管
  • HAProxy CORS OPTIONS 标头拦截设置

    通过我的 NGinx 设置 我能够拦截来自 ajax 预检的 OPTIONS 请求 并使用正确的 CORS 标头和 200 响应进行响应 以便请求可以继续前进 我正在尝试将我的前端代理整合到 HAProxy 中 但在解决这一难题时遇到了一些
  • HAPROXY 中 ACL 子域中的通配符

    尝试在 haproxy 中匹配以下内容 acl instagiveweb hdr beg host i foo something com 网址可能在哪里foo staging something com or foo something
  • HAProxy 随机空响应

    我安装了 HAPROXY 以实现两台服务器之间的平衡 不幸的是 HAPROXY 返回随机 ERR EMPTY RESPONSE 我也安装了统计信息 但统计信息没有出现频繁地因为有时会显示统计数据 我和一些朋友仔细检查了我的配置 没有发现问题
  • 对 Amazon EC2 上的 Weblogic 10gR3 RMI 服务器的负载平衡请求

    我正在参与开发一个分布式解决方案 基于RMI 并部署在多个Weblogic 10gR3 10 3 0 0 节点上 其中一个节点托管 RMI 服务器 其他节点通过外部 JNDI 提供程序访问它 在尝试通过添加额外的 RMI 服务器来改进我们的
  • HAProxy - 如果第一台机器返回 404,则从第二台机器提供 URL

    我遇到过这样的情况 网站的一部分 某些 URL 路径 由一台后端服务器提供服务 而所有其他 URL 则由 HAProxy 中的不同默认后端提供服务 现在 由于应用程序逻辑的编写方式 可以在两台物理服务器计算机中的任意一台上的同一路径上创建要
  • 反向代理受 NTLM 保护的网站

    如何将请求代理到受 NTLM 保护的网站 例如团队基金会 and 共享点 我不断得到401 身份验证错误 根据这篇 Microsoft TechNet 文章 https www microsoft com technet prodtechn

随机推荐

  • Utf8Json根据标记字段反序列化为类型

    With Json NET Newtonsoft我已成功使用自定义合约反序列化器和 json 转换器来根据标签选择反序列化器 在下面的情况下 ev 总之我希望实现同样的目标Utf8Json 完整详细信息如下 Stocks TRADE ev
  • IntelliJ Scala 配置问题

    所以 我下载了 Scala 并配置了路径 我可以从终端运行 Scala 控制台 Scala 插件已安装并且 你好世界 正在运行 问题是 当我编写 hello world 程序时 object First def main args Arra
  • 使用 Hive、S3、EMR 和恢复分区加载数据

    SOLVED 请参阅下面的更新 2 了解此问题的 解决方案 在 s3 中 我有一些 log gz 文件存储在嵌套目录结构中 例如 s3 BUCKET y 2012 m 11 d 09 H 10 我正在尝试使用多级分区规范将它们加载到 Ela
  • 创建本地和实例对象时出现 java StackOverflowError

    大家好 有人可以解释一下为什么这段代码会给我 StackOverflowError 错误吗 如果您能解释 instanceObj 初始化并调用 ObjectTest 构造函数和 java lang Object 构造函数时发生的情况 我真的
  • 在python中将具有多个值的字典键映射到json

    我正在尝试将一个具有多个值的键的字典映射到 python 中 这是我得到的 import json list abe matt roscoe key name nodes nodes setdefault key list abe matt
  • 如何为 ASP.NET MVC2 母版页提供独立于控制器的模型

    我在 ASP NET MVC2 下使用强类型视图和 autofac 进行依赖注入 并且尝试通过依赖注入获取通用动态标头 IE 我希望这种情况发生 即使视图已经存在 也不必离开该内容 我希望避免容器的静态发现和手动解析 但我找不到一种方法来轻
  • 结合 Knockout.js + KendoUI - 您的经验是什么?

    所以我看到 KendoUI 包含了与 Knockout js 集成的示例 http demos kendoui c om web integration index html http demos kendoui com web integ
  • 当用户选择不购买iOS应用内购买中的商品时,如何自定义错误处理?

    例如 当用户在应用内购买过程中要求登录时 他们可以单击 取消 按钮 然后应用程序将鞋 Can t connect to the iTunes Store 是否可以使用我们自己的回调来代替这个标准消息 我相信您不会收到 无法连接到 iTune
  • 从 App Engine 发送 HTTP 请求

    是否可以从我的 AppEngine 应用程序发送 HTTP 请求 我需要提出一些请求并从其他站点提取一些数据 是的 更多信息请点击这里 http code google com appengine docs python urlfetch
  • 添加 LTV 签名后,某些 pdf 文件已损坏

    我正在尝试在数字签名文档中添加 LTV 在某些文件中 它工作正常 但在某些文件中 它不起作用 我附上所有文件以供参考 我的 LTV 添加代码链接如下https github com akr pdftimestamp https github
  • 上下文包与完成通道以避免 goroutine 泄漏

    有两种不同的方法来清理 goroutine 使用kill 通道来发出取消信号 并使用done 通道来指示goroutine 已终止 type Worker struct Done chan struct Kill chan struct J
  • Tesseract 不使用路径变量

    为什么我的 Tesseract 实例要求我显式设置数据路径 但不想读取环境变量 让我澄清一下 运行代码 ITesseract tesseract new Tesseract String result tesseract doOCR myI
  • 使用react-pdf和react-chartjs-2生成pdf

    我环顾四周 但似乎找不到任何一起使用这两个库的示例 我的项目当前使用react pdf 生成pdf 报告 但我需要将chartjs 图表添加到我们将生成的一些新文件中 我不想使用两个不同的 pdf 库 也不必重新编码应用程序的某些部分以匹配
  • 在 Ubuntu 12.04 上完全删除并全新安装 python

    承认这一点很尴尬 但我只是继续努力在 Ubuntu 安装上设置我的 Python 环境 有时我让它工作得很好 但问题是 我觉得每当我坐下来对 python 项目进行一些业余爱好时 我最终都会花费几个小时来解决与我的 python 安装不一致
  • c# .NET CORE 使用 ITextSharp 将透明图像添加到现有 PDF

    我的目标是在现有 pdf 的每一页上添加公司徽标 不是水印 由于 pdf 文件和徽标的具体情况 我只能将徽标放置在 pdf 内容的顶部 而不是下面 并且徽标必须支持透明度 还有一个限制是我必须使用 NET Core 发布此内容并给出答案 因
  • Excel 中的错误消息

    在将 Excel ApplicationClass 的 DisplayAlerts 属性设置为 false 时 我遇到了以下错误的紧急问题 var excel new Excel Application excel DisplayAlert
  • Silverlight图像编辑器控件[关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 您是否知道任何 Silverlight 图像编辑器 控件 商业或开源 主要功能要求 裁剪 调整大小 旋转图像 设置背景颜色 插入文字 插入
  • 如何在 Java 中查找 2D 数组中的子数组是否具有特定的和?

    我试图通过比较源图像和图案图像中存在的像素的平均颜色来解决图像匹配问题 我已将这个问题简化为子数组求和问题 但无法找到解决方法 假设我有一个包含所有正整数的二维数组 ARR 我有一个数字 x 它是小图案图像中存在的像素颜色的平均值 我只需要
  • iPhone - 从另一个视图控制器调用函数

    我有一个名为 sendDataToMotor 的函数 它在我的第一个视图控制器类中 我有另一个名为 SecondViewController 的视图控制器 我需要从 Second View Controller m 类调用此函数 我尝试申报
  • haproxy 全局 maxconn 和服务器 maxconn 的区别

    我对我的 haproxy 配置有疑问 Global settings global log 127 0 0 1 syslog emerg maxconn 4000 quiet user haproxy group haproxy daemo