When are threaded instances considered "busy"?

If it is while they are serving only a one request it would explain
why Always on instances for threaded Java are now severely under-
utilized.

/Tom



On Jul 22, 10:57 am, Johan Euphrosine <pro...@google.com> wrote:
> HI Galoch,
>
> Thanks for the followup,
>
> I think you are experiencing a combinaison fo the two following rules
> I was pointing to in my previous email:
> (> reads as has priority for handling the incoming request)
> 2/ Spawning a new Dynamic instance > Busy Always On instance
> 4/ Idle Dynamic instance > Idle Always On instance
>
> Applied to your example it could means that:
> Resident Instance 1:   Requests: 49     Age: 1Hr
> Resident Instance 2:   Requests: 6      Age: 1Hr
> Resident Instance 3:   Requests: 2      Age: 1Hr
> Dynamic Instance 1:   Requests: 7      Age: 2min
> Dynamic Instance 2:   Requests: 291  Age: 1Hr
> Dynamic Instance 3:   Requests: 322  Age: 1Hr
>
> - 1 Hours ago while all your Always On instance were busy and you had
> a burst of incoming requests and the scheduler spawned new Dynamic
> instances as per rule 2/ highlighted above.
> - After the burst and back to normal traffic the new Dynamic Instances
> were handing incoming requests in priority as per rule 4/ highlighted
> above.
> - 2 Minutes ago all your instances Always On + Dynamic were busy again
> and the scheduler spawned a new Dynamic instance that handle 7
> incoming requests.
>
> Hope that make more sense for you and Francois, but as I said earlier
> we are open to suggestion and I will make sure someone working on the
> scheduler team monitor this thread for your input.
>
>
>
> On Fri, Jul 22, 2011 at 9:09 AM, Galoch <galoch...@gmail.com> wrote:
> > @Johan,
> > The issue is not about Always On instance being busy. Its actually the
> > other way ... the Always On instance is never busy ... at least that
> > is what we observed in last 3-4 days. Your explanation may be partly
> > true since this behavior keeps on changing.
>
> > For e.g. I have a snapshot of instances from July 19th and here's the
> > details (for some reason I can't see a link to attach the snapshot
> > images here):
> > Resident Instance 1:   Requests: 49     Age: 1Hr
> > Resident Instance 2:   Requests: 6      Age: 1Hr
> > Resident Instance 3:   Requests: 2      Age: 1Hr
> > Dynamic Instance 1:   Requests: 7      Age: 2min
> > Dynamic Instance 2:   Requests: 291  Age: 1Hr
> > Dynamic Instance 3:   Requests: 322  Age: 1Hr
>
> > This is under "no load" with only very light weight cron jobs running.
> > This gets much much worse during the day under peak load with requests
> > for dynamic instances reaching 1000+ in matter of minutes and resident
> > instances have only "1" request served.
>
> > As you see above Resident Instance 2 and 3 are hardly hit so I don't
> > think they are busy at all. On the other hand, Dynamic Instance 2 and
> > 3 get most of the hits.
>
> > Dynamic Instance 1 is what is killing us. It keeps getting killed and
> > reborn within that 5 minute window!!
>
> > We use Spring framework and it is really very expensive for us when a
> > new instance starts up.
>
> > Just to give you a background, we had gone through a real roller
> > coaster ride to make this to work on GAE by breaking the loading of
> > framework into many different chunks. But still spinning was out of
> > control. Then we found java threads to our rescue. We worked through
> > the hack to load JDO to avoid UnsupportedOperationException. We
> > finally got it to work where most of our requests were served by
> > Always On instances with occasional spinning of Dynamic instances. It
> > was quite impressive.
>
> > Unfortunately, this was short lived when we hit this new behavior with
> > GAE. The very last thing we want GAE to do is create a new instance
> > every few minutes as it could easily reach 30 second deadline during
> > the day and throw critical error.
>
> > I am not sure when the new billing will come into effect but we really
> > need this thing fixed as it literally brings down our app to a
> > grinding halt. So I am open to any suggestions you guys think can help
> > us.
>
> > Another thought about new scheduler is to have a configurable
> > schedule. For e.g. our users are mostly business users who work during
> > normal business hours. We want to be able to spin more Always On
> > instances during those hours and bring the number down during nights
> > and weekends. Dynamic instances won't work for us due to reason
> > explained above.
>
> > Thanks,
> > galoch
>
> > On Jul 21, 5:56 pm, Johan Euphrosine <pro...@google.com> 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
>
> >> I will give you an example to illustrate the behavior you all noticed,
> >> that is Dynamic instance handling request while Always On is idle.
>
> >> (Always On instance started)
> >> - Incoming request
> >> - Always On instance handle the request
> >> - another Incoming request
> >> (Always On instance busy)
> >> - A new Dynamic instance is spawned
> >> (Dynamic instance idle, Always on instance busy)
> >> - Dynamic instance handle the request
> >> - another Incoming request
> >> (Dynamic instance idle, Always on instance idle)
> >> - Dynamic instance handle the request
> >> - No request for more than idle-dynamic-instance-timeout
> >> - Dynamic instance shut down
> >> - another Incoming request
> >> (Always On instance idle)
> >> - Always On instance handle the request
>
> >> Hope it makes thing clearer.
>
> >> As part of the new billing model you will have a scheduler knob called
> >> 'max-idle-instances' that you can use if extra idling dynamic
> >> instances are undesired.
>
> >> The good news is that we are open to suggestion, if you think this
> >> behavior is the wrong default, feel free to comment on that thread and
> >> I will follow up your suggestion to the Engineering team.
>
> >> On Wed, Jul 20, 2011 at 12:18 AM, Galoch <galoch...@gmail.com> wrote:
> >> > Same here. Seems like GAE is totally ignoring Always On instances.
> >> > I also noticed that even with no user hitting our app and a single
> >> > cron job that runs every 5 minutes it is still spinning instances
> >> > every 3 minutes and then killing them in 2 minutes.
>
> >> > This has been happening since after the upgrade on 14th July. During
> >> > peak load this really gets nasty and brings down the performance.
>
> >> > This is the feedback I got yesterday from one of our customers since
> >> > it takes time to spin an instance (and yes we use Spring):
>
> >> > "1) I found the GUI to be very laggy"
>
> >> > Can someone from Google please respond?
>
> >> > --
> >> > You received this message because you are subscribed to the Google 
> >> > Groups "Google App Engine" group.
> >> > To post to this group, send email to google-appengine@googlegroups.com.
> >> > To unsubscribe from this group, send email to 
> >> > google-appengine+unsubscr...@googlegroups.com.
> >> > For more options, visit this group 
> >> > athttp://groups.google.com/group/google-appengine?hl=en.
>
> >> --
> >> Johan Euphrosine (proppy)
> >> Developer Programs Engineer
> >> Google Developer Relations
>
> > --
> > You received this message because you are subscribed to the Google Groups 
> > "Google App Engine" group.
> > To post to this group, send email to google-appengine@googlegroups.com.
> > To unsubscribe from this group, send email to 
> > google-appengine+unsubscr...@googlegroups.com.
> > For more options, visit this group 
> > athttp://groups.google.com/group/google-appengine?hl=en.
>
> --
> Johan Euphrosine (proppy)
> Developer Programs Engineer
> Google Developer Relations

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

Reply via email to