comparison src/http/modules/ngx_http_fastcgi_module.c @ 5832:d09b689911ac

Upstream: limited next_upstream time and tries (ticket #544). The new directives {proxy,fastcgi,scgi,uwsgi,memcached}_next_upstream_tries and {proxy,fastcgi,scgi,uwsgi,memcached}_next_upstream_timeout limit the number of upstreams tried and the maximum time spent for these tries when searching for a valid upstream.
author Roman Arutyunyan <arut@nginx.com>
date Fri, 12 Sep 2014 18:50:47 +0400
parents 906530c9ffd2
children 52b4984d2b3c
comparison
equal deleted inserted replaced
5831:575175ebf4b4 5832:d09b689911ac
440 ngx_conf_set_bitmask_slot, 440 ngx_conf_set_bitmask_slot,
441 NGX_HTTP_LOC_CONF_OFFSET, 441 NGX_HTTP_LOC_CONF_OFFSET,
442 offsetof(ngx_http_fastcgi_loc_conf_t, upstream.next_upstream), 442 offsetof(ngx_http_fastcgi_loc_conf_t, upstream.next_upstream),
443 &ngx_http_fastcgi_next_upstream_masks }, 443 &ngx_http_fastcgi_next_upstream_masks },
444 444
445 { ngx_string("fastcgi_next_upstream_tries"),
446 NGX_HTTP_MAIN_CONF|NGX_HTTP_SRV_CONF|NGX_HTTP_LOC_CONF|NGX_CONF_TAKE1,
447 ngx_conf_set_num_slot,
448 NGX_HTTP_LOC_CONF_OFFSET,
449 offsetof(ngx_http_fastcgi_loc_conf_t, upstream.next_upstream_tries),
450 NULL },
451
452 { ngx_string("fastcgi_next_upstream_timeout"),
453 NGX_HTTP_MAIN_CONF|NGX_HTTP_SRV_CONF|NGX_HTTP_LOC_CONF|NGX_CONF_TAKE1,
454 ngx_conf_set_msec_slot,
455 NGX_HTTP_LOC_CONF_OFFSET,
456 offsetof(ngx_http_fastcgi_loc_conf_t, upstream.next_upstream_timeout),
457 NULL },
458
445 { ngx_string("fastcgi_param"), 459 { ngx_string("fastcgi_param"),
446 NGX_HTTP_MAIN_CONF|NGX_HTTP_SRV_CONF|NGX_HTTP_LOC_CONF|NGX_CONF_TAKE23, 460 NGX_HTTP_MAIN_CONF|NGX_HTTP_SRV_CONF|NGX_HTTP_LOC_CONF|NGX_CONF_TAKE23,
447 ngx_http_upstream_param_set_slot, 461 ngx_http_upstream_param_set_slot,
448 NGX_HTTP_LOC_CONF_OFFSET, 462 NGX_HTTP_LOC_CONF_OFFSET,
449 offsetof(ngx_http_fastcgi_loc_conf_t, params_source), 463 offsetof(ngx_http_fastcgi_loc_conf_t, params_source),
2312 * conf->index.len = { 0, NULL }; 2326 * conf->index.len = { 0, NULL };
2313 */ 2327 */
2314 2328
2315 conf->upstream.store = NGX_CONF_UNSET; 2329 conf->upstream.store = NGX_CONF_UNSET;
2316 conf->upstream.store_access = NGX_CONF_UNSET_UINT; 2330 conf->upstream.store_access = NGX_CONF_UNSET_UINT;
2331 conf->upstream.next_upstream_tries = NGX_CONF_UNSET_UINT;
2317 conf->upstream.buffering = NGX_CONF_UNSET; 2332 conf->upstream.buffering = NGX_CONF_UNSET;
2318 conf->upstream.ignore_client_abort = NGX_CONF_UNSET; 2333 conf->upstream.ignore_client_abort = NGX_CONF_UNSET;
2319 2334
2320 conf->upstream.local = NGX_CONF_UNSET_PTR; 2335 conf->upstream.local = NGX_CONF_UNSET_PTR;
2321 2336
2322 conf->upstream.connect_timeout = NGX_CONF_UNSET_MSEC; 2337 conf->upstream.connect_timeout = NGX_CONF_UNSET_MSEC;
2323 conf->upstream.send_timeout = NGX_CONF_UNSET_MSEC; 2338 conf->upstream.send_timeout = NGX_CONF_UNSET_MSEC;
2324 conf->upstream.read_timeout = NGX_CONF_UNSET_MSEC; 2339 conf->upstream.read_timeout = NGX_CONF_UNSET_MSEC;
2340 conf->upstream.next_upstream_timeout = NGX_CONF_UNSET_MSEC;
2325 2341
2326 conf->upstream.send_lowat = NGX_CONF_UNSET_SIZE; 2342 conf->upstream.send_lowat = NGX_CONF_UNSET_SIZE;
2327 conf->upstream.buffer_size = NGX_CONF_UNSET_SIZE; 2343 conf->upstream.buffer_size = NGX_CONF_UNSET_SIZE;
2328 2344
2329 conf->upstream.busy_buffers_size_conf = NGX_CONF_UNSET_SIZE; 2345 conf->upstream.busy_buffers_size_conf = NGX_CONF_UNSET_SIZE;
2385 } 2401 }
2386 2402
2387 ngx_conf_merge_uint_value(conf->upstream.store_access, 2403 ngx_conf_merge_uint_value(conf->upstream.store_access,
2388 prev->upstream.store_access, 0600); 2404 prev->upstream.store_access, 0600);
2389 2405
2406 ngx_conf_merge_uint_value(conf->upstream.next_upstream_tries,
2407 prev->upstream.next_upstream_tries, 0);
2408
2390 ngx_conf_merge_value(conf->upstream.buffering, 2409 ngx_conf_merge_value(conf->upstream.buffering,
2391 prev->upstream.buffering, 1); 2410 prev->upstream.buffering, 1);
2392 2411
2393 ngx_conf_merge_value(conf->upstream.ignore_client_abort, 2412 ngx_conf_merge_value(conf->upstream.ignore_client_abort,
2394 prev->upstream.ignore_client_abort, 0); 2413 prev->upstream.ignore_client_abort, 0);
2402 ngx_conf_merge_msec_value(conf->upstream.send_timeout, 2421 ngx_conf_merge_msec_value(conf->upstream.send_timeout,
2403 prev->upstream.send_timeout, 60000); 2422 prev->upstream.send_timeout, 60000);
2404 2423
2405 ngx_conf_merge_msec_value(conf->upstream.read_timeout, 2424 ngx_conf_merge_msec_value(conf->upstream.read_timeout,
2406 prev->upstream.read_timeout, 60000); 2425 prev->upstream.read_timeout, 60000);
2426
2427 ngx_conf_merge_msec_value(conf->upstream.next_upstream_timeout,
2428 prev->upstream.next_upstream_timeout, 0);
2407 2429
2408 ngx_conf_merge_size_value(conf->upstream.send_lowat, 2430 ngx_conf_merge_size_value(conf->upstream.send_lowat,
2409 prev->upstream.send_lowat, 0); 2431 prev->upstream.send_lowat, 0);
2410 2432
2411 ngx_conf_merge_size_value(conf->upstream.buffer_size, 2433 ngx_conf_merge_size_value(conf->upstream.buffer_size,