我已经开始使用HAProxy限制我的API,但我最大的问题不是请求率,而是多线程请求重叠时。
即使在我的合法每秒限制范围内,当客户在发出另一个请求之前不等待响应时,也会出现大问题。
是否有可能(比如每个IP地址)对请求进行排队并将其一次传递给后端进行顺序处理?
答案 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。