Quite the patch. I recall this behavior being discussed a number of times in the past.
Question: why the default of 100? This feels like a significantly breaking change wrt. the previous behavior. Are there any plans for advanced communication regarding this change, outside of a nominal changelog entry (e.g., "introduced 'keepalive_requests' directive")? On Fri, Aug 10, 2018 at 1:02 PM, Maxim Dounin <[email protected]> wrote: > details: http://hg.nginx.org/nginx/rev/70c6b08973a0 > branches: > changeset: 7340:70c6b08973a0 > user: Maxim Dounin <[email protected]> > date: Fri Aug 10 21:54:46 2018 +0300 > description: > Upstream keepalive: keepalive_requests directive. > > The directive configures maximum number of requests allowed on > a connection kept in the cache. Once a connection reaches the number > of requests configured, it is no longer saved to the cache. > The default is 100. > > Much like keepalive_requests for client connections, this is mostly > a safeguard to make sure connections are closed periodically and the > memory allocated from the connection pool is freed. > > diffstat: > > src/http/modules/ngx_http_upstream_keepalive_module.c | 14 > ++++++++++++++ > src/http/ngx_http_upstream.c | 2 ++ > 2 files changed, 16 insertions(+), 0 deletions(-) > > diffs (64 lines): > > diff --git a/src/http/modules/ngx_http_upstream_keepalive_module.c > b/src/http/modules/ngx_http_upstream_keepalive_module.c > --- a/src/http/modules/ngx_http_upstream_keepalive_module.c > +++ b/src/http/modules/ngx_http_upstream_keepalive_module.c > @@ -12,6 +12,7 @@ > > typedef struct { > ngx_uint_t max_cached; > + ngx_uint_t requests; > ngx_msec_t timeout; > > ngx_queue_t cache; > @@ -92,6 +93,13 @@ static ngx_command_t ngx_http_upstream_ > offsetof(ngx_http_upstream_keepalive_srv_conf_t, timeout), > NULL }, > > + { ngx_string("keepalive_requests"), > + NGX_HTTP_UPS_CONF|NGX_CONF_TAKE1, > + ngx_conf_set_num_slot, > + NGX_HTTP_SRV_CONF_OFFSET, > + offsetof(ngx_http_upstream_keepalive_srv_conf_t, requests), > + NULL }, > + > ngx_null_command > }; > > @@ -142,6 +150,7 @@ ngx_http_upstream_init_keepalive(ngx_con > ngx_http_upstream_keepalive_ > module); > > ngx_conf_init_msec_value(kcf->timeout, 60000); > + ngx_conf_init_uint_value(kcf->requests, 100); > > if (kcf->original_init_upstream(cf, us) != NGX_OK) { > return NGX_ERROR; > @@ -312,6 +321,10 @@ ngx_http_upstream_free_keepalive_peer(ng > goto invalid; > } > > + if (c->requests >= kp->conf->requests) { > + goto invalid; > + } > + > if (!u->keepalive) { > goto invalid; > } > @@ -500,6 +513,7 @@ ngx_http_upstream_keepalive_create_conf( > */ > > conf->timeout = NGX_CONF_UNSET_MSEC; > + conf->requests = NGX_CONF_UNSET_UINT; > > return conf; > } > diff --git a/src/http/ngx_http_upstream.c b/src/http/ngx_http_upstream.c > --- a/src/http/ngx_http_upstream.c > +++ b/src/http/ngx_http_upstream.c > @@ -1546,6 +1546,8 @@ ngx_http_upstream_connect(ngx_http_reque > > c = u->peer.connection; > > + c->requests++; > + > c->data = r; > > c->write->handler = ngx_http_upstream_handler; > _______________________________________________ > nginx-devel mailing list > [email protected] > http://mailman.nginx.org/mailman/listinfo/nginx-devel >
_______________________________________________ nginx-devel mailing list [email protected] http://mailman.nginx.org/mailman/listinfo/nginx-devel
