Looking at source, I see that Jeff's patch, and the 'ttl' parameter in general, is only referenced under '#if APR_HAS_THREADS'. When I load-tested and found the timeouts, I was testing under Apache 2.2 Prefork, and thus that patched code is not even compiled, IIUC.
However I would still like to know what that parameter is for when running under Worker. I think the implication of my source journey is also that if my module instantiates multiple threads under Prefork (which it does), it must call apr_memcache* routines from only one of them. Is that correct? -Josh On Wed, Sep 26, 2012 at 7:17 PM, Joshua Marantz <jmara...@google.com> wrote: > +dev (sorry for the duplicate; my first attempt failed due to not being a > subscriber). > > Keeping modules-dev on CC if that's appropriate. > > Thanks, Jeff, I was wondering if there was a units issue there. I'm still > wondering if anyone can describe the meaning of that argument in more > detail. Is that related to my multiget APR_TIMEUP returns? The phrase > "time to live of client connection" confuses me. Would it be inaccurate to > instead say "the maximum number of seconds apr_memcache is willing to wait > for a single operation? Or does it mean *both*, implying that a fresh > TCP/IP connection is made for every new operation, but will stay alive for > only a certain number of seconds. > > I have a practical question about how I release software given this > change. Our module (mod_pagespeed) is documented to run with Apache 2.2 > and Apache 2.4. It seems like for 2.2 I should probably multiple my > desired argument by a million. Same with for 2.4.x and earlier, for some > value of x. How should I work this in my code? Should I query the version > number using an apr utility or something and multiply by a million in > certain cases? > > What's the best practice calling this function for module developers? > > -Josh > > > On Wed, Sep 26, 2012 at 6:20 PM, Jeff Trawick <traw...@gmail.com> wrote: > >> On Wed, Sep 26, 2012 at 5:38 PM, Joshua Marantz <jmara...@google.com> >> wrote: >> > Hi, >> > >> > I've been having some success with the apr_memcache_* functions. In >> > load-tests, however, I'm finding a lot of timeouts >> > with apr_memcache_multgetp. Specifically, the status returned with the >> > individual elements is APR_TIMEUP. >> > >> > This leads me to wonder what the significance of the second to last arg >> to >> > this function is: >> > >> > apr_memcache_server_create( >> > pool_, hosts_[i].c_str(), ports_[i], >> > kDefaultServerMin, kDefaultServerSmax, >> > thread_limit_, kDefaultServerTtlUs, &server); >> > >> > I have kDefaultServerSmax initialized to 600, as that's the value I >> found >> > in mod_socache_memcache.c But that seems stingy (if it's really in >> > microseconds). Should I be giving that a few hundred millis instead? >> > >> http://apr.apache.org/docs/apr-util/1.4/group___a_p_r___util___m_c.html#ga18ddd72bc1ab5edb0a08a8f26f193bd3 >> > claims >> > that means "time to live of client connection" but I don't understand >> what >> > that phrase means exactly, or if it relates to the APR_TIMEUP returns >> I've >> > been suffering from. >> > >> > My code is here; >> > >> http://code.google.com/p/modpagespeed/source/browse/trunk/src/net/instaweb/apache/apr_mem_cache.cc >> > >> > -Josh >> >> d...@apr.apache.org is a better place to ask about details of apr >> functions. >> >> Coincidentally, earlier today I committed someone's fix for the >> confusion about the units of ttl: >> >> http://svn.apache.org/viewvc?view=revision&revision=1390530 >> >> It is supposed to be in seconds. Pick up the tiny change to >> apr_memcache.c and see if that helps anything. You should continue >> this discussion on d...@apr.apache.org. >> >> -- >> Born in Roswell... married an alien... >> http://emptyhammock.com/ >> > >