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/
>>
>
>

Reply via email to