2012-08-03

GAE的Frontend Instance Hours高居不下咋办?

架设GAE用了GoAgent之后,对于Dashborad中的Frontend Instance Hours一项数字如此之高有些不解。查了Google,发现有同样疑问的还有很多人。于是翻了翻Google的文档,做了做实验,基本上弄明白了。

其实这个数字高也不代表什么。不信你可以架一个Hello world上去,先不要急着访问,只是打开Dashboard看看。Number of Instances应该是0,Frontend Instance Hours也是0。然后再打开WebBrowser访问一下你的Hello world,再看Dashboard。现在Number of Instances是1了,而Frontend Instance Hours就开始了渐渐的增长,哪怕你把WebBrowser马上关掉也是如此。
说白了,Frontend Instance Hours就是GAE记录的服务实例运行所用掉的时间配额。没访问过的话,实例数是0。而一旦有HTTP请求,GAE就得启动一个实例来响应这个请求。运行这个实例需要耗费相应的CPU和内存资源,于是GAE就开始计费了。实例不停,Frontend Instance Hours就会一直长。而GAE为了能在短时间内响应下一个请求,通常是不会很快把实例给停掉的。(至于到底会等多久才停实例,据说是15分钟无新请求就不再增长Frontend Instance Hours,但实例数还在,估计挂起了。不过你可以手动停掉它。)
既然叫做【Hours】,增长的速度当然就是指的实例实际运行的时间。实例跑了一个小时,那么Frontend Instance Hours就会增加1.00。我没测过Google会不会在计费上面耍点小手段,大抵是不会的,个人感觉也基本上差不多。
所以看着Frontend Instance Hours一点一点地增长,也完全不必心慌。一天24小时,GAE给了28的免费配额,如果你只跑一个实例,是不可能用完的。用到23.99,下一分钟就第二天,重新计算,清零了。对于只跑GoAgent的用户,实在不放心的话,我觉得用两个AppID来跑也完全足够了。当然,流量超了的情况另算。

那么什么时候Frontend Instance Hours会超过24呢?据说一个请求如果在等待了超过Min Pending Latency的时间之后,仍然没有实例能来处理它,那么GAE就会开一个新实例来做这个事情。所以GAE给了免费用户28个Frontend Instance Hours。Google的解释是为了让用户能够应对一些紧急状况。
另外,这个【紧急情况】,除了指访问量大导致的多实例运行,也包括了一个功能,就是GAE允许用户调高Frontend Instance Class。F2级就比F1级多用一倍的计算资源,而Frontend Instance Hours也就增长得快一倍。这种情况下,多出来的4个小时就可以视为GAE给的【加力】之类的东西了。如果你只想在短期内进行一个高强度的计算,那么可以考虑用F4来跑一个APP看看。

没有评论:

发表评论