客户端连接和前端负载平衡

客户端连接和前端负载平衡

我只是想弄清楚 HaProxy 中前端、后端和服务器之间的排队/超时。我仍在学习 TCP、套接字、连接等,所以如果这些问题没有意义,请原谅我。我只是想确认/澄清以下几点:

客户端连接和前端负载平衡

Haproxy 本身有一个全球的 maxconn限制(我称之为gmc)。据我所知,这gmc传入来自客户端的连接(路由到前端)。

每个前端都有自己的maxconn设置(我称之为femc)。

如果我gmc40,我有两个前端,每个前端femc都有10我得到了50一次发送请求。

问题:

  • 是否确实会接受 20 个(每个前端 10 个),积压 20 个(每个前端 10 个),而剩下的 10 个会在代理级别全局积压?
  • 是否存在全局待办事项和前端待办事项?或者该backlog参数仅与前端相关。
  • 如果存在全局积压,这是否仅仅是基于可用文件描述符数量的特定操作系统?
  • 如果我们将最大积压设置为 1,剩余的请求会怎样?它们会被立即拒绝吗?(我想这取决于之前的答案)
  • 全局 maxconn 是否也适用于后端连接?它是整个系统所有连接的上限吗?

服务器连接和请求排队

继续上面的例子,我们将为每个前端添加一个后端,每个后端都有两个服务器,每个服务器maxconn2each ( smc) 和 maxqueue 为1smq)。

因此,每个后端可以同时处理 4 个请求(每个服务器 2 个),并将排队 2 个请求(每个服务器 1 个),每个后端总共 6 个请求

问题:

  • 前端收到的额外 4 个请求会怎样?它们会在那里“排队”吗?前端是否有控制此排队的参数?
  • 后端是否有自己的不可配置的队列?(maxqueue 似乎仅处于服务器级别)

我之所以问这些问题,是因为我们有一个旧服务器,其请求属性非常复杂。有些可能发生在10ms,有些则10s发生在 。我们目前对服务器连接没有任何限制,我们发现我们的一些 Web 服务器的积压被非常慢的请求填满,而其他服务器几乎处于空闲状态。最终,我试图让这种情况稍微平息一些。

对上述问题的任何答案都将非常有帮助!

相关内容