Hi List,
I wanted to ask about an unexpected behavior I'm observing with the bandwidth
limit filter. I'm not sure if it's a bug, a misconfiguration, or if I'm just
misunderstanding.
Config:
peers
<snip>
table bw-by-src type ipv6 size 25k expire 1h store
bytes_out_rate(10s)
frontend
<snip>
# Bandwidth filters
# Limit to 50MB/10s
filter bwlim-out by-src key src table pop_local/bw-by-src limit
50m
# Limit other to 100MB/10s (temporarily higher limits)
filter bwlim-out other-by-src key src table pop_local/bw-by-src limit
100m
http-request set-bandwidth-limit by-src if
is_first_thing
http-request set-bandwidth-limit other-by-src if
is_other_thing
With this configuration, 99% of requests succeed, but approximately 1% of
requests, especially requests made in isolation hang forever. The average
payload in this config is between 50-100kB / request, but some requests would
be quite small (< 1kB) or quite large (> 500kB).
For example, a standard curl GET request returns the headers, but never the
body (at least not in the first few seconds). We have a mix of HTTP/1.1, H2,
and H3 front-end connections, with HTTP/1.1 on the backend.
Does the 10s period create a problem? (The goal with that is to allow temporary
bursts especially at initial connection with an average limit.) Do I need to
add min-size (reading the code doesn't seem to imply it would help)?
I may be misreading the docs, and it's just a bogus configuration. :)
Thanks in advance for any help or ideas you all have!
Best,
Luke
—
Luke Seelenbinder
Stadia Maps | Founder & CEO
stadiamaps.com