mirror of
https://github.com/nginx/nginx.git
synced 2024-12-03 04:39:00 +08:00
Upstream keepalive: "single" parameter deprecated.
The original idea was to optimize edge cases in case of interchangeable backends, i.e. don't establish a new connection if we have any one cached. This causes more harm than good though, as it screws up underlying balancer's idea about backends used and may result in various unexpected problems.
This commit is contained in:
parent
91c654debc
commit
29844cd55c
@ -12,7 +12,6 @@
|
||||
|
||||
typedef struct {
|
||||
ngx_uint_t max_cached;
|
||||
ngx_uint_t single; /* unsigned:1 */
|
||||
|
||||
ngx_queue_t cache;
|
||||
ngx_queue_t free;
|
||||
@ -223,36 +222,11 @@ ngx_http_upstream_get_keepalive_peer(ngx_peer_connection_t *pc, void *data)
|
||||
|
||||
kp->failed = 0;
|
||||
|
||||
/* single pool of cached connections */
|
||||
|
||||
if (kp->conf->single && !ngx_queue_empty(&kp->conf->cache)) {
|
||||
|
||||
q = ngx_queue_head(&kp->conf->cache);
|
||||
|
||||
item = ngx_queue_data(q, ngx_http_upstream_keepalive_cache_t, queue);
|
||||
c = item->connection;
|
||||
|
||||
ngx_queue_remove(q);
|
||||
ngx_queue_insert_head(&kp->conf->free, q);
|
||||
|
||||
ngx_log_debug1(NGX_LOG_DEBUG_HTTP, pc->log, 0,
|
||||
"get keepalive peer: using connection %p", c);
|
||||
|
||||
c->idle = 0;
|
||||
c->log = pc->log;
|
||||
c->read->log = pc->log;
|
||||
c->write->log = pc->log;
|
||||
c->pool->log = pc->log;
|
||||
|
||||
pc->connection = c;
|
||||
pc->cached = 1;
|
||||
|
||||
return NGX_DONE;
|
||||
}
|
||||
/* ask balancer */
|
||||
|
||||
rc = kp->original_get_peer(pc, kp->data);
|
||||
|
||||
if (kp->conf->single || rc != NGX_OK) {
|
||||
if (rc != NGX_OK) {
|
||||
return rc;
|
||||
}
|
||||
|
||||
@ -552,7 +526,8 @@ ngx_http_upstream_keepalive(ngx_conf_t *cf, ngx_command_t *cmd, void *conf)
|
||||
for (i = 2; i < cf->args->nelts; i++) {
|
||||
|
||||
if (ngx_strcmp(value[i].data, "single") == 0) {
|
||||
kcf->single = 1;
|
||||
ngx_conf_log_error(NGX_LOG_WARN, cf, 0,
|
||||
"the \"single\" parameter is deprecated");
|
||||
continue;
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user