comparison src/http/modules/ngx_http_memcached_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 ab48149b77a6
children 85f00678e54a
comparison
equal deleted inserted replaced
5831:575175ebf4b4 5832:d09b689911ac
99 NGX_HTTP_MAIN_CONF|NGX_HTTP_SRV_CONF|NGX_HTTP_LOC_CONF|NGX_CONF_1MORE, 99 NGX_HTTP_MAIN_CONF|NGX_HTTP_SRV_CONF|NGX_HTTP_LOC_CONF|NGX_CONF_1MORE,
100 ngx_conf_set_bitmask_slot, 100 ngx_conf_set_bitmask_slot,
101 NGX_HTTP_LOC_CONF_OFFSET, 101 NGX_HTTP_LOC_CONF_OFFSET,
102 offsetof(ngx_http_memcached_loc_conf_t, upstream.next_upstream), 102 offsetof(ngx_http_memcached_loc_conf_t, upstream.next_upstream),
103 &ngx_http_memcached_next_upstream_masks }, 103 &ngx_http_memcached_next_upstream_masks },
104
105 { ngx_string("memcached_next_upstream_tries"),
106 NGX_HTTP_MAIN_CONF|NGX_HTTP_SRV_CONF|NGX_HTTP_LOC_CONF|NGX_CONF_TAKE1,
107 ngx_conf_set_num_slot,
108 NGX_HTTP_LOC_CONF_OFFSET,
109 offsetof(ngx_http_memcached_loc_conf_t, upstream.next_upstream_tries),
110 NULL },
111
112 { ngx_string("memcached_next_upstream_timeout"),
113 NGX_HTTP_MAIN_CONF|NGX_HTTP_SRV_CONF|NGX_HTTP_LOC_CONF|NGX_CONF_TAKE1,
114 ngx_conf_set_msec_slot,
115 NGX_HTTP_LOC_CONF_OFFSET,
116 offsetof(ngx_http_memcached_loc_conf_t, upstream.next_upstream_timeout),
117 NULL },
104 118
105 { ngx_string("memcached_gzip_flag"), 119 { ngx_string("memcached_gzip_flag"),
106 NGX_HTTP_MAIN_CONF|NGX_HTTP_SRV_CONF|NGX_HTTP_LOC_CONF|NGX_CONF_TAKE1, 120 NGX_HTTP_MAIN_CONF|NGX_HTTP_SRV_CONF|NGX_HTTP_LOC_CONF|NGX_CONF_TAKE1,
107 ngx_conf_set_num_slot, 121 ngx_conf_set_num_slot,
108 NGX_HTTP_LOC_CONF_OFFSET, 122 NGX_HTTP_LOC_CONF_OFFSET,
581 * conf->upstream.uri = { 0, NULL }; 595 * conf->upstream.uri = { 0, NULL };
582 * conf->upstream.location = NULL; 596 * conf->upstream.location = NULL;
583 */ 597 */
584 598
585 conf->upstream.local = NGX_CONF_UNSET_PTR; 599 conf->upstream.local = NGX_CONF_UNSET_PTR;
600 conf->upstream.next_upstream_tries = NGX_CONF_UNSET_UINT;
586 conf->upstream.connect_timeout = NGX_CONF_UNSET_MSEC; 601 conf->upstream.connect_timeout = NGX_CONF_UNSET_MSEC;
587 conf->upstream.send_timeout = NGX_CONF_UNSET_MSEC; 602 conf->upstream.send_timeout = NGX_CONF_UNSET_MSEC;
588 conf->upstream.read_timeout = NGX_CONF_UNSET_MSEC; 603 conf->upstream.read_timeout = NGX_CONF_UNSET_MSEC;
604 conf->upstream.next_upstream_timeout = NGX_CONF_UNSET_MSEC;
589 605
590 conf->upstream.buffer_size = NGX_CONF_UNSET_SIZE; 606 conf->upstream.buffer_size = NGX_CONF_UNSET_SIZE;
591 607
592 /* the hardcoded values */ 608 /* the hardcoded values */
593 conf->upstream.cyclic_temp_file = 0; 609 conf->upstream.cyclic_temp_file = 0;
617 ngx_http_memcached_loc_conf_t *conf = child; 633 ngx_http_memcached_loc_conf_t *conf = child;
618 634
619 ngx_conf_merge_ptr_value(conf->upstream.local, 635 ngx_conf_merge_ptr_value(conf->upstream.local,
620 prev->upstream.local, NULL); 636 prev->upstream.local, NULL);
621 637
638 ngx_conf_merge_uint_value(conf->upstream.next_upstream_tries,
639 prev->upstream.next_upstream_tries, 0);
640
622 ngx_conf_merge_msec_value(conf->upstream.connect_timeout, 641 ngx_conf_merge_msec_value(conf->upstream.connect_timeout,
623 prev->upstream.connect_timeout, 60000); 642 prev->upstream.connect_timeout, 60000);
624 643
625 ngx_conf_merge_msec_value(conf->upstream.send_timeout, 644 ngx_conf_merge_msec_value(conf->upstream.send_timeout,
626 prev->upstream.send_timeout, 60000); 645 prev->upstream.send_timeout, 60000);
627 646
628 ngx_conf_merge_msec_value(conf->upstream.read_timeout, 647 ngx_conf_merge_msec_value(conf->upstream.read_timeout,
629 prev->upstream.read_timeout, 60000); 648 prev->upstream.read_timeout, 60000);
649
650 ngx_conf_merge_msec_value(conf->upstream.next_upstream_timeout,
651 prev->upstream.next_upstream_timeout, 0);
630 652
631 ngx_conf_merge_size_value(conf->upstream.buffer_size, 653 ngx_conf_merge_size_value(conf->upstream.buffer_size,
632 prev->upstream.buffer_size, 654 prev->upstream.buffer_size,
633 (size_t) ngx_pagesize); 655 (size_t) ngx_pagesize);
634 656