Ah excellent!  Thank you for confirming.  I'm glad I now understand what
I'm sacrificing by limiting $MII to 1.  I'll milk the system by continuing
to decrease $MPL (too bad it can't be negative :)), and when my load
increases to a point where minimum possible $MPL isn't good enough, i'll
bump up $MII to 2.  Hopefully my revenue can support that when that happens.

On Tue, Dec 6, 2011 at 3:29 PM, Brandon Wirtz <[email protected]> wrote:

> Likely you have to ask the GAE guys, but what I have seen is that Max Idle
> is the maximum number of Instance that will be spun up at once.****
>
> If you take 200ms to spin up an instance and got 75 requests,  you’d take
> 75/205 (they takes a few ms to check) to spin up all the instances  so I’m
> going to make the math easy  5 new instances a second, 75 requests, 15
> seconds for browser to time out… you would cut it pretty close, but
> shouldn’t see too many time out.****
>
> ** **
>
> That assumes everything is happy… Remember that when GAE is being “slow”
> spinups sometimes take 50% longer and requests take 50% longer to serve… *
> ***
>
> ** **
>
> But you nailed the point.   You can Pay for Speed and reliability, or you
> can be cheap and have things be a bit slower and less reliable.****
>
> ** **
>
> *From:* [email protected] [mailto:
> [email protected]] *On Behalf Of *Rishi Arora
> *Sent:* Tuesday, December 06, 2011 7:46 AM
> *To:* [email protected]
> *Subject:* Re: [google-appengine] Max Idle, Max Pending Latency****
>
> ** **
>
> Brandon,****
>
> This is very helpful (maybe a little funny too, but that might depend on
> who the reader is :)).  I have questions Re: *"**If you don’t have
> concurrency that means you need to handle them in serial, unless you have
> more than one instance"*:  I am one of those cheap people who insist on
> keeping $MII to 1, even though, during the day, my num-active-instances
> hovers around 10, and spikes to ~25 occasionally.  I see this as "I'm only
> paying for one instance, but I'm getting 25 for free".  However, I
> understand (and it is also apparent from your calculations below) that I'm
> paying somehow, because of increased latencies, and eventual timeouts.  I'm
> counting on the fact though, that my app startup time is around 200ms (not
> 15 seconds as in your example), and I have set $MPL to 50ms.  I expect GAE
> to spawn multiple new instances indefinitely to service spikes in my load.
>  Each new instance will take 200ms to spawn, and assuming a 15 second
> timeout for my client, I expect I can handle 75 concurrent requests before
> my client starts to see timeout errors.  Do you agree?  I'm just looking
> for some confirmation for my calculations.  If course, since I'm lazy too
> (and maybe stubborn as well), I have stayed married to python2.5, and this
> means 75 concurrent requests will get served by 75 GAE front-end instances.
>  Do you think GAE will spawn 75 instances, given my $MII=1, and $MPL=50ms,
> in response to a 75 request spike in my load?****
>
> ** **
>
> Thanks in advance.****
>
> ** **
>
> On Mon, Dec 5, 2011 at 7:10 PM, Brandon Wirtz <[email protected]> wrote:
> ****
>
> I’m too lazy to build a tool to calculate this for you. ****
>
>  ****
>
> The Formula for non-concurrent tasks is pretty simple.   ****
>
>  ****
>
> How many simultaneous requests do you need to handle? (Hint Chrome will
> request 8 assets at a time) If you don’t know I’m telling you it is 10.***
> *
>
>  ****
>
> Great. So you need to handle 10 requests. If you don’t have concurrency
> that means you need to handle them in serial, unless you have more than one
> instance.****
>
>  ****
>
> How Many instances do you have? 1 Because if you are asking about this
> topic I assume you care enough to set 1 for always on, but you set idle to
> 1 because you are cheap.****
>
>  ****
>
> How Long Does your App take to spin up? 15 seconds. Mine doesn’t take this
> long, but yours does because I needed to pick a number that accounts for
> all you people who get the errors when your app spins up.****
>
>  ****
>
> How long does the average request take to fill? 2 seconds. I pulled this
> out of my ass, you should be a good person and shoot for 1 second but
> things happen, yours take 2.****
>
>  ****
>
> OK. Soooo we now have all the numbers we need****
>
>  ****
>
>  ****
>
> $CI = Current Instances****
>
> $MII = Max Idle Instances****
>
> $MPL = Max Pending Latency****
>
> $ART = Avertage Request time****
>
> $SR = Simultaneous Requests****
>
> $****
>
>  ****
>
> $SR[8] / $CI[1]  * $ART[2] = Seconds to fill requests. In this case 16  If
> your app was idle before the first request came in chances are that the
> user timed out the 8th request as it will generally only wait 15. You
> Errored.****
>
>  ****
>
> So we kick on Max pending Latency of 200Ms Why that number it sounded nice
> a lot of you pick this number.****
>
> $SR[8] / $CI[1]  * $ART[2]  -> 16 Seconds of stuff to do, we need 8
> instances to try and get it all done because with 200 ms for a pending, no
> task can be pending it takes too long…****
>
>  ****
>
> Spin up $MII [1] Instances****
>
> We now have 1 instance for the first 5 seconds and 2 after it gets spun
> up, so****
>
> Instance 1 fills Request 1,2,3****
>
> Instance 2 fills request 4****
>
> 5,6,7,8 are still pending, we should spin up $MII[more instances because
> everyone is busy and more than 200ms out****
>
> Instance 3 fills 6****
>
> Instance 1 fills 7****
>
> Instance 2 Fills 8****
>
>  ****
>
> But the browser timed out Request 4 because it was 15 seconds before the
> instance started to spin up, it took 15 seconds to spin up instance 3 so
> that request failed, as did request 8.****
>
>  ****
>
>  ****
>
>  ****
>
>  ****
>
>  ****
>
>  ****
>
> --
> You received this message because you are subscribed to the Google Groups
> "Google App Engine" group.
> To post to this group, send email to [email protected].
> To unsubscribe from this group, send email to
> [email protected].
> For more options, visit this group at
> http://groups.google.com/group/google-appengine?hl=en.****
>
> ** **
>
> --
> You received this message because you are subscribed to the Google Groups
> "Google App Engine" group.
> To post to this group, send email to [email protected].
> To unsubscribe from this group, send email to
> [email protected].
> For more options, visit this group at
> http://groups.google.com/group/google-appengine?hl=en.****
>
> --
> You received this message because you are subscribed to the Google Groups
> "Google App Engine" group.
> To post to this group, send email to [email protected].
> To unsubscribe from this group, send email to
> [email protected].
> For more options, visit this group at
> http://groups.google.com/group/google-appengine?hl=en.
>

-- 
You received this message because you are subscribed to the Google Groups 
"Google App Engine" group.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to 
[email protected].
For more options, visit this group at 
http://groups.google.com/group/google-appengine?hl=en.

Reply via email to