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

Reply via email to