[PATCH] memcached_force_ranges for memcached upstream

Martin Mlynář nexus at smoula.net
Tue Apr 21 14:29:32 UTC 2015


Hello,

Dne 2015-04-21 15:53, Roman Arutyunyan napsal:
> Hello,
> 
> On Tue, Apr 21, 2015 at 03:45:12PM +0200, Martin Mlynář wrote:
>> Hello,
>> 
>> Dne 2015-04-21 15:39, Roman Arutyunyan napsal:
>> >Hello!
>> >
>> >On Tue, Apr 21, 2015 at 01:37:52PM +0200, Martin Mlynář wrote:
>> >># HG changeset patch
>> >># User Martin Mlynář <nexus at smoula.net>
>> >># Date 1429613281 -7200
>> >>#      Tue Apr 21 12:48:01 2015 +0200
>> >># Node ID 4cb149154501fc638596ab51031f8b3b64da2a7f
>> >># Parent  1bdfceda86a99a4dc99934181d2f9e2632003ca8
>> >>memcached_force_ranges for memcached upstream
>> >>
>> >>Allow option force_ranges for memcached upstream
>> >>
>> >>diff -r 1bdfceda86a9 -r 4cb149154501
>> >>src/http/modules/ngx_http_memcached_module.c
>> >>--- a/src/http/modules/ngx_http_memcached_module.c	Mon Apr 20 17:36:51
>> >>2015 +0300
>> >>+++ b/src/http/modules/ngx_http_memcached_module.c	Tue Apr 21 12:48:01
>> >>2015 +0200
>> >>@@ -95,6 +95,13 @@
>> >>       offsetof(ngx_http_memcached_loc_conf_t, upstream.read_timeout),
>> >>       NULL },
>> >>
>> >>+    { ngx_string("memcached_force_ranges"),
>> >>+
>> >>NGX_HTTP_MAIN_CONF|NGX_HTTP_SRV_CONF|NGX_HTTP_LOC_CONF|NGX_CONF_FLAG,
>> >>+      ngx_conf_set_flag_slot,
>> >>+      NGX_HTTP_LOC_CONF_OFFSET,
>> >>+      offsetof(ngx_http_memcached_loc_conf_t, upstream.force_ranges),
>> >>+      NULL },
>> >>+
>> >>     { ngx_string("memcached_next_upstream"),
>> >>NGX_HTTP_MAIN_CONF|NGX_HTTP_SRV_CONF|NGX_HTTP_LOC_CONF|NGX_CONF_1MORE,
>> >>       ngx_conf_set_bitmask_slot,
>> >>@@ -604,6 +611,7 @@
>> >>     conf->upstream.next_upstream_timeout = NGX_CONF_UNSET_MSEC;
>> >>
>> >>     conf->upstream.buffer_size = NGX_CONF_UNSET_SIZE;
>> >>+    conf->upstream.force_ranges = NGX_CONF_UNSET;
>> >>
>> >>     /* the hardcoded values */
>> >>     conf->upstream.cyclic_temp_file = 0;
>> >>@@ -647,6 +655,9 @@
>> >>     ngx_conf_merge_msec_value(conf->upstream.read_timeout,
>> >>                               prev->upstream.read_timeout, 60000);
>> >>
>> >>+    ngx_conf_merge_value(conf->upstream.force_ranges,
>> >>+                              prev->upstream.force_ranges, 0);
>> >>+
>> >>     ngx_conf_merge_msec_value(conf->upstream.next_upstream_timeout,
>> >>                               prev->upstream.next_upstream_timeout, 0);
>> >
>> >It's better to enable ranges in the memcached module without any
>> >directives.
>> >You can find such "hardcoded values" in
>> >ngx_http_memcached_create_loc_conf().
>> 
>> I've tried to be consistent with other modules which does it this way 
>> like:
>> 
>> ngx_http_proxy_module.c
>> ngx_http_scgi_module.c
>> ngx_http_uwsgi_module.c
>> ngx_http_fastcgi_module.c
>> 
>> Is there any reason why memcached should be an exception? Or am I 
>> getting
>> something wrong?
> 
> As you can see, the memcached module is an exception for many settings.
> 
> As for ranges, memcache backend cannot apply ranges, so nginx is the 
> only
> option.  With other upstream modules nginx tries to be consistent with 
> the
> origin server behavior.

Thank you for your explanation. I expect according to the policy you've 
mentioned
change like this can not be accepted to upstream. Am I right?

--
Best regards,
Martin



More information about the nginx-devel mailing list