Johan, it seems to me the problem is rule 4/ below. Shouldn't the rule be:
Idle Always On instance > Idle Dynamic instance instead? In this way, if you have a dynamic instance on, it will not handle traffic unless the always-on ones are busy. So when the traffic decreases, and the dynamic instances are no longer needed, they will be correctly shut off. I also think an auxiliary problem is with rule 2/ If you spawn a new instance just because the others are all busy, you may tend to have too many instances. The fact of spawning new instances should be configurable, depending on how many requests are already queued for the instances you have already active -- 0, 1, more, etc. More in general, if you allowed users to specify how much it costs to them to delay serving a request, it would not be difficult to synthesize for each app an optimal decision policy to decide whether to switch another instance on or off. This can be done using tools from dynamic optimization / control theory. I would be glad to help if the people there need guidance on this (I used to be in the research group there till a month ago). Luca On Thursday, July 21, 2011 5:56:42 PM UTC-7, Johan Euphrosine (Google) wrote: > > After speaking with Engs, I think I can explain what is going on: > > Here are the current scheduling rules: (> reads as has priority for > handling the incoming request) > > 1/ Idle Always On instance > Spawning a new Dynamic instance > 2/ Spawning a new Dynamic instance > Busy Always On instance > 3/ Idle Dynamic instance > Busy Always On instance > 4/ Idle Dynamic instance > Idle Always On instance > > -- You received this message because you are subscribed to the Google Groups "Google App Engine" group. To view this discussion on the web visit https://groups.google.com/d/msg/google-appengine/-/X8gH6jjIK0MJ. 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.
