comparison src/http/modules/ngx_http_scgi_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
296 NGX_HTTP_MAIN_CONF|NGX_HTTP_SRV_CONF|NGX_HTTP_LOC_CONF|NGX_CONF_1MORE, 296 NGX_HTTP_MAIN_CONF|NGX_HTTP_SRV_CONF|NGX_HTTP_LOC_CONF|NGX_CONF_1MORE,
297 ngx_conf_set_bitmask_slot, 297 ngx_conf_set_bitmask_slot,
298 NGX_HTTP_LOC_CONF_OFFSET, 298 NGX_HTTP_LOC_CONF_OFFSET,
299 offsetof(ngx_http_scgi_loc_conf_t, upstream.next_upstream), 299 offsetof(ngx_http_scgi_loc_conf_t, upstream.next_upstream),
300 &ngx_http_scgi_next_upstream_masks }, 300 &ngx_http_scgi_next_upstream_masks },
301
302 { ngx_string("scgi_next_upstream_tries"),
303 NGX_HTTP_MAIN_CONF|NGX_HTTP_SRV_CONF|NGX_HTTP_LOC_CONF|NGX_CONF_TAKE1,
304 ngx_conf_set_num_slot,
305 NGX_HTTP_LOC_CONF_OFFSET,
306 offsetof(ngx_http_scgi_loc_conf_t, upstream.next_upstream_tries),
307 NULL },
308
309 { ngx_string("scgi_next_upstream_timeout"),
310 NGX_HTTP_MAIN_CONF|NGX_HTTP_SRV_CONF|NGX_HTTP_LOC_CONF|NGX_CONF_TAKE1,
311 ngx_conf_set_msec_slot,
312 NGX_HTTP_LOC_CONF_OFFSET,
313 offsetof(ngx_http_scgi_loc_conf_t, upstream.next_upstream_timeout),
314 NULL },
301 315
302 { ngx_string("scgi_param"), 316 { ngx_string("scgi_param"),
303 NGX_HTTP_MAIN_CONF|NGX_HTTP_SRV_CONF|NGX_HTTP_LOC_CONF|NGX_CONF_TAKE23, 317 NGX_HTTP_MAIN_CONF|NGX_HTTP_SRV_CONF|NGX_HTTP_LOC_CONF|NGX_CONF_TAKE23,
304 ngx_http_upstream_param_set_slot, 318 ngx_http_upstream_param_set_slot,
305 NGX_HTTP_LOC_CONF_OFFSET, 319 NGX_HTTP_LOC_CONF_OFFSET,
1072 return NULL; 1086 return NULL;
1073 } 1087 }
1074 1088
1075 conf->upstream.store = NGX_CONF_UNSET; 1089 conf->upstream.store = NGX_CONF_UNSET;
1076 conf->upstream.store_access = NGX_CONF_UNSET_UINT; 1090 conf->upstream.store_access = NGX_CONF_UNSET_UINT;
1091 conf->upstream.next_upstream_tries = NGX_CONF_UNSET_UINT;
1077 conf->upstream.buffering = NGX_CONF_UNSET; 1092 conf->upstream.buffering = NGX_CONF_UNSET;
1078 conf->upstream.ignore_client_abort = NGX_CONF_UNSET; 1093 conf->upstream.ignore_client_abort = NGX_CONF_UNSET;
1079 1094
1080 conf->upstream.local = NGX_CONF_UNSET_PTR; 1095 conf->upstream.local = NGX_CONF_UNSET_PTR;
1081 1096
1082 conf->upstream.connect_timeout = NGX_CONF_UNSET_MSEC; 1097 conf->upstream.connect_timeout = NGX_CONF_UNSET_MSEC;
1083 conf->upstream.send_timeout = NGX_CONF_UNSET_MSEC; 1098 conf->upstream.send_timeout = NGX_CONF_UNSET_MSEC;
1084 conf->upstream.read_timeout = NGX_CONF_UNSET_MSEC; 1099 conf->upstream.read_timeout = NGX_CONF_UNSET_MSEC;
1100 conf->upstream.next_upstream_timeout = NGX_CONF_UNSET_MSEC;
1085 1101
1086 conf->upstream.send_lowat = NGX_CONF_UNSET_SIZE; 1102 conf->upstream.send_lowat = NGX_CONF_UNSET_SIZE;
1087 conf->upstream.buffer_size = NGX_CONF_UNSET_SIZE; 1103 conf->upstream.buffer_size = NGX_CONF_UNSET_SIZE;
1088 1104
1089 conf->upstream.busy_buffers_size_conf = NGX_CONF_UNSET_SIZE; 1105 conf->upstream.busy_buffers_size_conf = NGX_CONF_UNSET_SIZE;
1140 } 1156 }
1141 1157
1142 ngx_conf_merge_uint_value(conf->upstream.store_access, 1158 ngx_conf_merge_uint_value(conf->upstream.store_access,
1143 prev->upstream.store_access, 0600); 1159 prev->upstream.store_access, 0600);
1144 1160
1161 ngx_conf_merge_uint_value(conf->upstream.next_upstream_tries,
1162 prev->upstream.next_upstream_tries, 0);
1163
1145 ngx_conf_merge_value(conf->upstream.buffering, 1164 ngx_conf_merge_value(conf->upstream.buffering,
1146 prev->upstream.buffering, 1); 1165 prev->upstream.buffering, 1);
1147 1166
1148 ngx_conf_merge_value(conf->upstream.ignore_client_abort, 1167 ngx_conf_merge_value(conf->upstream.ignore_client_abort,
1149 prev->upstream.ignore_client_abort, 0); 1168 prev->upstream.ignore_client_abort, 0);
1157 ngx_conf_merge_msec_value(conf->upstream.send_timeout, 1176 ngx_conf_merge_msec_value(conf->upstream.send_timeout,
1158 prev->upstream.send_timeout, 60000); 1177 prev->upstream.send_timeout, 60000);
1159 1178
1160 ngx_conf_merge_msec_value(conf->upstream.read_timeout, 1179 ngx_conf_merge_msec_value(conf->upstream.read_timeout,
1161 prev->upstream.read_timeout, 60000); 1180 prev->upstream.read_timeout, 60000);
1181
1182 ngx_conf_merge_msec_value(conf->upstream.next_upstream_timeout,
1183 prev->upstream.next_upstream_timeout, 0);
1162 1184
1163 ngx_conf_merge_size_value(conf->upstream.send_lowat, 1185 ngx_conf_merge_size_value(conf->upstream.send_lowat,
1164 prev->upstream.send_lowat, 0); 1186 prev->upstream.send_lowat, 0);
1165 1187
1166 ngx_conf_merge_size_value(conf->upstream.buffer_size, 1188 ngx_conf_merge_size_value(conf->upstream.buffer_size,