- An instance starts when either- it is needed to serve a request (there are no IDLE or FREE-IDLE instances available subject to max-pending-latency) - starts in ACTIVE state
Thanks for writing that. It's correct, and a cool way to think about
how idleness works under the new model.
Cheers,
Jon
> --
> 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/-/78I4vMk1Al8J.
> To post to this group, send email to google-a...@googlegroups.com.
> To unsubscribe from this group, send email to
> google-appengi...@googlegroups.com.
> For more options, visit this group at
> http://groups.google.com/group/google-appengine?hl=en.
>
I thought I did respond... In any event, for the reasons you listed
above and others, this is why max-idle-instances is important. It
ensures that you are not held accountable for scheduler behaviors such
as these listed. When you set it, the billable-instances-rate is
determined by max-idle-instances (a setting you directly control) and
active-instances-rate (again, hopefully something you control). The
nuances of how the scheduler spins up extra instances to minimize
latency and provide spare capacity are not part of the formula, other
than their effect on your serving latency and reliability.
> Another case was reported as well, although he had hundreds of instances
> running, so it would be a lot harder to grok the state of the system in his
> case.
> -Joshua
>
> --
> You received this message because you are subscribed to the Google Groups
> "Google App Engine" group.
I thought I did respond... In any event, for the reasons you listed
above and others, this is why max-idle-instances is important. It
ensures that you are not held accountable for scheduler behaviors such
as these listed. When you set it, the billable-instances-rate is
determined by max-idle-instances (a setting you directly control) and
active-instances-rate (again, hopefully something you control). The
nuances of how the scheduler spins up extra instances to minimize
latency and provide spare capacity are not part of the formula, other
than their effect on your serving latency and reliability.
Oops, a typo. I meant to say:
"""Note that this
is actually why your 09-06 billable instances hours (25.59) are
less than your 09-05 billable instance hours (29.17). Also, your
09-07 report should be even lower."""
> I think that 25 daily instance hours is about the lowest your
> going to see for this app.
> I hope that helps,
> Jon
>
> On Thu, Sep 8, 2011 at 8:45 AM, Joshua Smith <Joshua...@charter.net> wrote:
>>
>> On Sep 8, 2011, at 10:36 AM, Jon McAlister wrote:
>>
>> I thought I did respond... In any event, for the reasons you listed
>> above and others, this is why max-idle-instances is important. It
>> ensures that you are not held accountable for scheduler behaviors such
>> as these listed. When you set it, the billable-instances-rate is
>> determined by max-idle-instances (a setting you directly control) and
>> active-instances-rate (again, hopefully something you control). The
>> nuances of how the scheduler spins up extra instances to minimize
>> latency and provide spare capacity are not part of the formula, other
>> than their effect on your serving latency and reliability.
>>
>> Unless I'm misunderstanding, we are "held accountable for scheduler behaviors such as these listed."
>> If the load could be served by a single instance, but the scheduler decides to start a second one to handle a single request (for no apparent reason), there is going to be a minimum of 0.25 instance hours added to my bill. If this happens once a day, and I need an instance up all the time to handle an external kiosk which refreshes itself, then I'm going to be charged for 24.25 - 24 (free) = 0.25 instance hours. If this happens X times a day, I'll be charged for 0.25X instance hours a day. And I have the billing prediction numbers to prove it:
>>
1) I have to give you $9 anyway, and
2) When 2.7 comes out, assuming I survive the switch to HR, I should be able to handle everything with 1 instance no problem.
It's just that there are some *unexplained* things going on in the scheduler, and that is driving a lot of this worry among developers.
A full accounting of the kinds of glitches that can cause the scheduler to be heavy-handed with the instances is probably something you guys should give us, to help drive the point home that you are aware of these issues and are doing something about them.
-Joshua
Unless I'm misunderstanding, we are "held accountable for scheduler behaviors such as these listed."If the load could be served by a single instance, but the scheduler decides to start a second one to handle a single request (for no apparent reason), there is going to be a minimum of 0.25 instance hours added to my bill. If this happens once a day, and I need an instance up all the time to handle an external kiosk which refreshes itself, then I'm going to be charged for 24.25 - 24 (free) = 0.25 instance hours. If this happens X times a day, I'll be charged for 0.25X instance hours a day. And I have the billing prediction numbers to prove it:
That sounds like a reasonable request. However, I would not
characterize this example as heavy-handed. Your desire here is for one
instance always, never more and never less. And occasionally you are
getting one extra instance, which is soon killed off. In this
particular design space, that is literally the smallest possible error
that could be made by the instance scheduler :-P
I understand that the worry, and I agree we should do better. There
are indeed several things which can be happening here. The usual
suspects are request spike, app moved to another machine, or datastore
latency spike, but there are other things that can trigger this as
well. Basically, it's actually a complex distributed system under the
hood, but we're trying hard to make it appear to not be. But at places
like this, details are bleeding through the abstraction layer.
Thanks for hanging in with us. We mean well, we messed up, we're working on it.
Hope that helps,
Jon
One way to fix some of these problems would be to raise the free quota
to 25 instance hours. Greg D thought this was a good idea when the new
pricing was first announced, but it seems to have been forgotten
about:
On Wed, May 18, 2011 at 4:55 PM, Gregory D'alesandre <gr...@google.com> wrote:
> On Wed, May 18, 2011 at 1:57 AM, 风笑雪 <kea...@gmail.com> wrote:
>>
>> Hi Greg,
>>
>> Can you raise On-demand Frontend Instances free quota to 25 Instance Hours
>> per day?
>>
>> The small apps have very low traffics in average, but sometime (maybe
>> several minutes) it may use more than 1 instances to handle burst traffics,
>> so that they will got OverQuotaErrors at the end of the day.
>
> Its a good point, we'll look into this. Thanks for the suggestion!
>
> Greg
Another way to fix some of this might be to enable people to allocate
resources within the free budget allowance themselves. So for example,
some of the 9 hours currently available for backends could be used for
front ends, or vice versa. Arguably, it would better highlight some of
the advantages of the billing interface.
I would not
characterize this example as heavy-handed
Why could a start-up image not be saved and almost instantaneously
loaded from disk (like PC hibernation does) ?
Would this not totally replace the need for any idle instances ?
Where is the catch, considering how too obvious this is ;?)
--