Thanks, Bryan! Based on the discussion with Bryan on slack, below is the newer proposed config changes: 1) Rename "proxy.config.net.max_active_connections_in" to "proxy.config.net.max_requests_in"
2) Rename "proxy.config.http.server_max_connections" to "proxy.config.net.max_connections_out" 3) "proxy.config.net.max_connections_in" - This config will stay put to limit the max number of in-flight requests (concurrency) + idle (socket) connections 4) "proxy.config.net.connections_throttle" - This config will stay put to limit the max number of open connections (FD, rlimits etc), but eventually will be deprecated and replaced with {{ "proxy.config.net.max_connections_in" + "proxy.config.net.max_connections_out" }} Please provide any feedback/comments/concerns. Thanks, Sudheer On Friday, May 15, 2020, 11:11:53 AM PDT, Bryan Call <bc...@apache.org> wrote: After seeing the GitHub PR I think we should keep proxy.config.net.max_connections_in since it is the number of socket connections (active + idle) and then rename proxy.config.net.max_active_connections_in, as you suggested in your email, to proxy.config.net.max_active_requests_in or proxy.config.net.max_requests_in (as Sudheer suggested on Slack). I would like to see us get rid of proxy.config.net.connections_throttle in the long term and use max_connections_in/out if possible. -Bryan > On May 12, 2020, at 5:17 PM, Sudheer Vinukonda > <sudheervinuko...@yahoo.com.INVALID> wrote: > > 9.x (re)introduces a feature (it was accidentally "lost" during some > unrelated refactoring) that will allow to configure limits on max "active" > connections that can be allowed at any given time > (https://github.com/apache/trafficserver/pull/6754) > Given that this feature is based on tracking "active connections", it should > work very well with HTTP/1.1 traffic (where, 1 active connection = 1 > request). However, with HTTP/2 and stream multiplexing, this is no longer > true and it isn't nearly as effective. One can still use an average number of > concurrent streams/connection to configure the limits, but, ideally, what > would work for both HTTP/1.1 and HTTP/2 (and going forward with QUIC/HTTP/3) > would be to track and (rate) limit request level concurrency. There is some > ongoing work on this and to align better with that work, we are proposing to > make the below changes to existing configs with 9.x > > 1) Rename "proxy.config.net.max_connections_in" to > "proxy.config.net.max_requests_in" > 2) Rename "proxy.config.net.max_active_connections_in" to > "proxy.config.net.max_active_requests_in" > 3) proxy.config.net.connections_throttle - This config will stay put to limit > the max number of open connections (FD, rlimits etc) > > More context on the new changes - > > > The idea is to tune active connections that can be handled (based on the > available resources/capacity (CPU, Memory, Network bandwidth) and > minimize/remove dependency on having to tune connection timeouts > (active/inactive/keep-alive etc) which are very hard to tune. > > The primary goal is to limit the max active connections allowed at any given > instant. The resource requirement for an idle/inactive vs active connections > are completely different - For e.g an idle connection really only consumes > memory resource, while an active connection consumes CPU, network besides > memory. And allowing to tune/cap the max active connections based on the > deployed capacity for the resources available, would make timeout tuning > almost redundant and no op. Otherwise, we'd have to tune the timeouts to > estimate throughput which is very hard as it's hard to justify how large or > small we want the active timeout to be or keep alive timeout to be. For e.g > in a non-peak hour, we could let the active timeout be much higher than the > default, while during peak hour, we'd want to limit it to ensure we are not > starving resources on one connection. > Note: there's one little TODO item here. PluginVC's connections are not > tracked in the NetVC's active queue because these are bogus internal > connections. However, for some users, internal traffic is significant (e.g > sideways calls, or background fetches etc) and does consume plenty of > resources. Since these internal requests don't impact ingress network, and > have a slightly different resource requirements than client originated > requests, it might be better to track these using a separate config for > internal requests. Will follow that part up with a separate PR. > >