comparison src/http/modules/ngx_http_uwsgi_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 2aff40b3dea2
comparison
equal deleted inserted replaced
5831:575175ebf4b4 5832:d09b689911ac
351 NGX_HTTP_MAIN_CONF|NGX_HTTP_SRV_CONF|NGX_HTTP_LOC_CONF|NGX_CONF_1MORE, 351 NGX_HTTP_MAIN_CONF|NGX_HTTP_SRV_CONF|NGX_HTTP_LOC_CONF|NGX_CONF_1MORE,
352 ngx_conf_set_bitmask_slot, 352 ngx_conf_set_bitmask_slot,
353 NGX_HTTP_LOC_CONF_OFFSET, 353 NGX_HTTP_LOC_CONF_OFFSET,
354 offsetof(ngx_http_uwsgi_loc_conf_t, upstream.next_upstream), 354 offsetof(ngx_http_uwsgi_loc_conf_t, upstream.next_upstream),
355 &ngx_http_uwsgi_next_upstream_masks }, 355 &ngx_http_uwsgi_next_upstream_masks },
356
357 { ngx_string("uwsgi_next_upstream_tries"),
358 NGX_HTTP_MAIN_CONF|NGX_HTTP_SRV_CONF|NGX_HTTP_LOC_CONF|NGX_CONF_TAKE1,
359 ngx_conf_set_num_slot,
360 NGX_HTTP_LOC_CONF_OFFSET,
361 offsetof(ngx_http_uwsgi_loc_conf_t, upstream.next_upstream_tries),
362 NULL },
363
364 { ngx_string("uwsgi_next_upstream_timeout"),
365 NGX_HTTP_MAIN_CONF|NGX_HTTP_SRV_CONF|NGX_HTTP_LOC_CONF|NGX_CONF_TAKE1,
366 ngx_conf_set_msec_slot,
367 NGX_HTTP_LOC_CONF_OFFSET,
368 offsetof(ngx_http_uwsgi_loc_conf_t, upstream.next_upstream_timeout),
369 NULL },
356 370
357 { ngx_string("uwsgi_param"), 371 { ngx_string("uwsgi_param"),
358 NGX_HTTP_MAIN_CONF|NGX_HTTP_SRV_CONF|NGX_HTTP_LOC_CONF|NGX_CONF_TAKE23, 372 NGX_HTTP_MAIN_CONF|NGX_HTTP_SRV_CONF|NGX_HTTP_LOC_CONF|NGX_CONF_TAKE23,
359 ngx_http_upstream_param_set_slot, 373 ngx_http_upstream_param_set_slot,
360 NGX_HTTP_LOC_CONF_OFFSET, 374 NGX_HTTP_LOC_CONF_OFFSET,
1252 conf->modifier1 = NGX_CONF_UNSET_UINT; 1266 conf->modifier1 = NGX_CONF_UNSET_UINT;
1253 conf->modifier2 = NGX_CONF_UNSET_UINT; 1267 conf->modifier2 = NGX_CONF_UNSET_UINT;
1254 1268
1255 conf->upstream.store = NGX_CONF_UNSET; 1269 conf->upstream.store = NGX_CONF_UNSET;
1256 conf->upstream.store_access = NGX_CONF_UNSET_UINT; 1270 conf->upstream.store_access = NGX_CONF_UNSET_UINT;
1271 conf->upstream.next_upstream_tries = NGX_CONF_UNSET_UINT;
1257 conf->upstream.buffering = NGX_CONF_UNSET; 1272 conf->upstream.buffering = NGX_CONF_UNSET;
1258 conf->upstream.ignore_client_abort = NGX_CONF_UNSET; 1273 conf->upstream.ignore_client_abort = NGX_CONF_UNSET;
1259 1274
1260 conf->upstream.local = NGX_CONF_UNSET_PTR; 1275 conf->upstream.local = NGX_CONF_UNSET_PTR;
1261 1276
1262 conf->upstream.connect_timeout = NGX_CONF_UNSET_MSEC; 1277 conf->upstream.connect_timeout = NGX_CONF_UNSET_MSEC;
1263 conf->upstream.send_timeout = NGX_CONF_UNSET_MSEC; 1278 conf->upstream.send_timeout = NGX_CONF_UNSET_MSEC;
1264 conf->upstream.read_timeout = NGX_CONF_UNSET_MSEC; 1279 conf->upstream.read_timeout = NGX_CONF_UNSET_MSEC;
1280 conf->upstream.next_upstream_timeout = NGX_CONF_UNSET_MSEC;
1265 1281
1266 conf->upstream.send_lowat = NGX_CONF_UNSET_SIZE; 1282 conf->upstream.send_lowat = NGX_CONF_UNSET_SIZE;
1267 conf->upstream.buffer_size = NGX_CONF_UNSET_SIZE; 1283 conf->upstream.buffer_size = NGX_CONF_UNSET_SIZE;
1268 1284
1269 conf->upstream.busy_buffers_size_conf = NGX_CONF_UNSET_SIZE; 1285 conf->upstream.busy_buffers_size_conf = NGX_CONF_UNSET_SIZE;
1327 } 1343 }
1328 1344
1329 ngx_conf_merge_uint_value(conf->upstream.store_access, 1345 ngx_conf_merge_uint_value(conf->upstream.store_access,
1330 prev->upstream.store_access, 0600); 1346 prev->upstream.store_access, 0600);
1331 1347
1348 ngx_conf_merge_uint_value(conf->upstream.next_upstream_tries,
1349 prev->upstream.next_upstream_tries, 0);
1350
1332 ngx_conf_merge_value(conf->upstream.buffering, 1351 ngx_conf_merge_value(conf->upstream.buffering,
1333 prev->upstream.buffering, 1); 1352 prev->upstream.buffering, 1);
1334 1353
1335 ngx_conf_merge_value(conf->upstream.ignore_client_abort, 1354 ngx_conf_merge_value(conf->upstream.ignore_client_abort,
1336 prev->upstream.ignore_client_abort, 0); 1355 prev->upstream.ignore_client_abort, 0);
1344 ngx_conf_merge_msec_value(conf->upstream.send_timeout, 1363 ngx_conf_merge_msec_value(conf->upstream.send_timeout,
1345 prev->upstream.send_timeout, 60000); 1364 prev->upstream.send_timeout, 60000);
1346 1365
1347 ngx_conf_merge_msec_value(conf->upstream.read_timeout, 1366 ngx_conf_merge_msec_value(conf->upstream.read_timeout,
1348 prev->upstream.read_timeout, 60000); 1367 prev->upstream.read_timeout, 60000);
1368
1369 ngx_conf_merge_msec_value(conf->upstream.next_upstream_timeout,
1370 prev->upstream.next_upstream_timeout, 0);
1349 1371
1350 ngx_conf_merge_size_value(conf->upstream.send_lowat, 1372 ngx_conf_merge_size_value(conf->upstream.send_lowat,
1351 prev->upstream.send_lowat, 0); 1373 prev->upstream.send_lowat, 0);
1352 1374
1353 ngx_conf_merge_size_value(conf->upstream.buffer_size, 1375 ngx_conf_merge_size_value(conf->upstream.buffer_size,