【问题标题】:App Engine downtimeApp Engine 停机时间
【发布时间】:2010-07-20 18:03:19
【问题描述】:

Google 的 App Engine 是否有过多的停机时间,特别是在数据存储写入方面?

此外,停机时间似乎安排在交通繁忙时段,例如,在下午中午与凌晨 3:00 之间。这是正常的吗?随着技术的成熟,它会改善吗?

【问题讨论】:

  • 总是在下午的某个地方。即使是凌晨 3 点。
  • @DOK - 是的。我的反驳是,谷歌总部设在美国……而且美国比其他所有人都好。
  • 一种稍微客观的看待它的方法是按小时测量点击总数。我怀疑美国的午后时间并不是 appengine“用户”总体上的最低活动水平,但这将是一个有趣的统计数据。
  • +1 我认为停机时间何时发生以及应用程序引擎停机时间趋势的问题将引起不少 GAE 开发人员的兴趣。

标签: google-app-engine google-cloud-datastore downtime


【解决方案1】:

简答

  1. 下午与清晨停机时间。数据存储在下午比凌晨(太平洋时间;包括 put、update、并删除可用性)。

    注意:我确信 Google 会喜欢在非高峰时段发生停机。因此,我希望他们会继续尝试尽量减少停机时间,或尽可能将其安排在非高峰时段。

  2. 停机时间趋势。 数据存储不可用的 15 分钟周期数一直在减少。在过去 366 天中,每天平均有 3.8 个 15 分钟的数据存储不可用。在过去 200 天里,这一数字下降了 60%,降至每天 2.3 次。过去几个月的写入停机时间实际上相当不错 - 自 3 月 1 日以来,每天 15 分钟的写入停机时间不到 0.25 次。这是数据存储写入停机时间的图表: Downtime trending http://imagebin.ca/img/4wkHVQPc.png


答案来源

为了回答您的问题,我写了this script,它从GAE's Datastore Status page 中提取停机时间数据。


图表

Datastore write downtime from 2009-Jul-20 to 2010-Jul-20 (4 hour bins):

alt text http://imagebin.ca/img/p9ScWTm.png

Datastore write downtime from 2009-Jul-20 to 2010-Jul-20 (1 hour bins):

alt text http://imagebin.ca/img/9FbLut2G.png

Datastore downtime from 2009-Jul-20 to 2010-Jul-20 (4 hour bins):

alt text http://imagebin.ca/img/t3XKLk.png

Datastore downtime from 2010-Jan-01 to 2010-Jul-20 (4 hour bins):

alt text http://imagebin.ca/img/k36T9h.png


原始数据

(如果您想使用稍微不同的参数收集自己的数据,您可以调整脚本顶部的变量):

# RAW Data: Each element counts the number of days in which the datastore
# was unavailable for at least some portion of a given 15-minute window. The
# first element corresponds to the time chunk from 00:00 to 00:15, and so on.
RESULTS_SINCE_2010JAN01_BIN15 = [0, 0, 0, 0, 3, 11, 3, 3, 3, 3, 12, 3, 3, 3, 4, 14, 4, 4, 4, 4, 12, 2, 2, 2, 2, 14, 4, 4, 4, 4, 11, 2, 2, 2, 2, 11, 5, 5, 5, 5, 13, 4, 4, 4, 4, 14, 7, 5, 5, 5, 14, 4, 3, 3, 3, 13, 2, 2, 2, 2, 12, 5, 4, 4, 4, 14, 5, 3, 3, 3, 12, 7, 2, 2, 2, 5, 5, 0, 0, 0, 2, 9, 3, 2, 2, 2, 10, 1, 1, 1, 2, 9, 3, 3, 3, 15]
RESULTS_SINCE_2009JUL20_BIN15 = [0, 0, 0, 0, 11, 21, 5, 5, 5, 5, 29, 6, 6, 6, 7, 38, 11, 11, 11, 11, 37, 7, 7, 7, 7, 44, 12, 12, 12, 12, 37, 10, 10, 10, 10, 34, 7, 7, 7, 7, 46, 11, 11, 11, 11, 39, 15, 13, 13, 13, 44, 13, 12, 12, 12, 44, 5, 5, 5, 5, 34, 11, 10, 10, 10, 40, 13, 11, 11, 11, 31, 21, 12, 12, 11, 19, 21, 4, 4, 4, 13, 28, 10, 9, 9, 16, 36, 10, 10, 10, 12, 32, 7, 7, 6, 35]
RESULTS_WRITE_DOWNTIME_SINCE_2009JUL20_BIN15 = [0, 0, 0, 0, 4, 12, 4, 4, 4, 4, 22, 6, 6, 6, 7, 27, 7, 7, 7, 7, 21, 6, 6, 6, 6, 32, 9, 9, 9, 9, 26, 8, 8, 8, 8, 27, 7, 7, 7, 7, 30, 7, 7, 7, 7, 27, 10, 8, 8, 8, 28, 10, 9, 9, 9, 28, 4, 4, 4, 4, 21, 4, 4, 4, 4, 25, 6, 4, 4, 4, 18, 14, 9, 10, 9, 16, 17, 2, 2, 2, 8, 18, 7, 6, 6, 9, 19, 5, 5, 5, 6, 18, 5, 5, 4, 21]

# RESULTS DISTILLED FROM COLLECTED_RESULTS
RESULTS_SINCE_2010JAN01_BIN60 = [RESULTS_SINCE_2010JAN01_BIN15[i*4]+RESULTS_SINCE_2010JAN01_BIN15[i*4+1]+RESULTS_SINCE_2010JAN01_BIN15[i*4+2]+RESULTS_SINCE_2010JAN01_BIN15[i*4+3] for i in xrange(24)]
RESULTS_SINCE_2010JAN01_BIN240 = [RESULTS_SINCE_2010JAN01_BIN60[i*4]+RESULTS_SINCE_2010JAN01_BIN60[i*4+1]+RESULTS_SINCE_2010JAN01_BIN60[i*4+2]+RESULTS_SINCE_2010JAN01_BIN60[i*4+3] for i in xrange(6)]
RESULTS_SINCE_2010JAN01_BIN480 = [RESULTS_SINCE_2010JAN01_BIN60[i*2]+RESULTS_SINCE_2010JAN01_BIN60[i*2+1] for i in xrange(3)]
RESULTS_SINCE_2009JUL20_BIN60 = [RESULTS_SINCE_2009JUL20_BIN15[i*4]+RESULTS_SINCE_2009JUL20_BIN15[i*4+1]+RESULTS_SINCE_2009JUL20_BIN15[i*4+2]+RESULTS_SINCE_2009JUL20_BIN15[i*4+3] for i in xrange(24)]
RESULTS_SINCE_2009JUL20_BIN240 = [RESULTS_SINCE_2009JUL20_BIN60[i*4]+RESULTS_SINCE_2009JUL20_BIN60[i*4+1]+RESULTS_SINCE_2009JUL20_BIN60[i*4+2]+RESULTS_SINCE_2009JUL20_BIN60[i*4+3] for i in xrange(6)]
RESULTS_SINCE_2009JUL20_BIN480 = [RESULTS_SINCE_2009JUL20_BIN240[i*2]+RESULTS_SINCE_2009JUL20_BIN240[i*2+1] for i in xrange(3)]
RESULTS_WRITE_DOWNTIME_SINCE_2009JUL20_BIN60 = [RESULTS_WRITE_DOWNTIME_SINCE_2009JUL20_BIN15[i*4]+RESULTS_WRITE_DOWNTIME_SINCE_2009JUL20_BIN15[i*4+1]+RESULTS_WRITE_DOWNTIME_SINCE_2009JUL20_BIN15[i*4+2]+RESULTS_WRITE_DOWNTIME_SINCE_2009JUL20_BIN15[i*4+3] for i in xrange(24)]
RESULTS_WRITE_DOWNTIME_SINCE_2009JUL20_BIN240 = [RESULTS_WRITE_DOWNTIME_SINCE_2009JUL20_BIN60[i*4]+RESULTS_WRITE_DOWNTIME_SINCE_2009JUL20_BIN60[i*4+1]+RESULTS_WRITE_DOWNTIME_SINCE_2009JUL20_BIN60[i*4+2]+RESULTS_WRITE_DOWNTIME_SINCE_2009JUL20_BIN60[i*4+3] for i in xrange(6)]
RESULTS_WRITE_DOWNTIME_SINCE_2009JUL20_BIN480 = [RESULTS_WRITE_DOWNTIME_SINCE_2009JUL20_BIN240[i*2]+RESULTS_WRITE_DOWNTIME_SINCE_2009JUL20_BIN240[i*2+1] for i in xrange(3)]

【讨论】:

  • 太棒了,大卫!如果我可以多次投票,我会的。
  • 非常感谢尼克! :)
猜你喜欢
  • 2021-08-26
  • 1970-01-01
  • 2014-03-12
  • 1970-01-01
  • 2021-09-23
  • 2019-11-25
  • 2021-05-05
  • 1970-01-01
  • 2019-03-31
相关资源
最近更新 更多