如何强制执行单线程请求?

时间:2017-08-17 17:34:36

标签: haproxy

我已经开始使用HAProxy限制我的API,但我最大的问题不是请求率,而是多线程请求重叠时。

即使在我的合法每秒限制范围内,当客户在发出另一个请求之前不等待响应时,也会出现大问题。

是否有可能(比如每个IP地址)对请求进行排队并将其一次传递给后端进行顺序处理?

1 个答案:

答案 0 :(得分:0)

以下是每个src IP 一次强制执行一个连接的可能解决方案 您需要将以下HAProxy conf放在相应的前端:

frontend fe_main
  mode http
  stick-table type ip size 1m store conn_cur
  tcp-request connection track-sc0 src
  tcp-request connection reject if { src_conn_cur gt 1 }

这将创建一个粘贴表,用于存储每个源IP的并发连接数。如果已经从同一src IP建立了连接,则拒绝新连接。

模仿与您的API或NAT后面的客户端的多个连接的浏览器将无法有效地使用您的API。