App Engine 停机时间

2023-12-27

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

此外,停机时间似乎安排在流量高的时间段,例如下午中间和凌晨 3:00。这是正常的吗?随着技术的成熟,它会有所改善吗?


简短的答案

  1. 下午与清晨的停机时间。下午数据存储不可用的写入频率比凌晨(太平洋时间;包括放置、更新和删除可用性)高出约 20-30%。

    Note: 我确信谷歌会like非高峰时段发生停机。因此,我预计他们将继续尽力减少停机时间,或尽可能将其安排在非高峰时段。

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


答案来源

为了回答你的问题,我写了这个脚本 http://gist.github.com/483827从中提取停机数据GAE 的数据存储状态页面 http://code.google.com/status/appengine/detail/datastore/2010/07/20.


Graphs

数据存储write2009年7月20日至2010年7月20日的停机时间(4小时) http://imagebin.ca/img/p9ScWTm.png:

替代文本 http://imagebin.ca/img/p9ScWTm.png http://imagebin.ca/img/p9ScWTm.png

数据存储write2009年7月20日至2010年7月20日的停机时间(1小时间隔) http://imagebin.ca/img/9FbLut2G.png:

替代文本 http://imagebin.ca/img/9FbLut2G.png http://imagebin.ca/img/9FbLut2G.png

2009 年 7 月 20 日至 2010 年 7 月 20 日期间的数据存储停机时间(4 小时) http://imagebin.ca/img/t3XKLk.png:

替代文本 http://imagebin.ca/img/t3XKLk.png http://imagebin.ca/img/t3XKLk.png

从 2010 年 1 月 1 日到 2010 年 7 月 20 日的数据存储停机时间(4 小时) http://imagebin.ca/img/k36T9h.png:

替代文本 http://imagebin.ca/img/k36T9h.png http://imagebin.ca/img/k36T9h.png


Raw data

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

# 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)]
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

App Engine 停机时间 的相关文章

随机推荐

  • 将 Java 对象实例替换为另一个和所有引用

    有没有一种方法可以用另一个对象替换java中的对象 从而更新对第一个对象的所有引用以指向第二个对象 在 C 中 这个问题在这里得到了回答 将对象实例替换为 C 中的另一个对象实例 https stackoverflow com questi
  • 如何告诉 iOS 我不希望应用程序停留在后台?

    有没有办法告诉 iOS 我不希望我的应用程序停留在后台 换句话说 我可以告诉我的应用程序在进入后台时自行退出吗 我在用ABPeoplePickerNavigationController在我的 UITbarController 的选项卡之一
  • 如何在大空间范围内加速最小成本路径模型

    继从如何提高最低成本路径模型的模拟速度 https stackoverflow com questions 21839462 how can i increase speed up simulation of my least cost p
  • 使用 onclick 事件解除 div 内“a”的 onclick 事件的绑定

    html div div class desc desc div a href foo php foo a div js container click function my function 当用户单击除 a 标签之外的容器内部时 此功
  • Unity 5 非静态字段、方法或属性错误需要对象引用

    在 Unity 5 中 在 PlayerMovement 类的第 35 行使用 c 时出现此错误 错误 CS0120 非静态字段需要对象引用 方法或属性 GameManager completeLevel 玩家动作类别 using Syst
  • 将鼠标悬停在 DIV 上时显示内容

    是否可以将鼠标悬停在 DIV 上时显示内容 看Image https i stack imgur com r4b0G jpg 当我将鼠标悬停在 div 上时 会发生转换 但是是否可以在悬停的 div 内显示内容 即 图片等 html div
  • 安全密码散列[关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 我需要在 Net WinForms 应用程序中存储单个密码的哈希值 最安全的方法是什么 尤其 盐 HMAC 还是两者兼而有之 多少盐 迭代了多少
  • 在 Material ui 中自定义扩展面板并覆盖样式

    我想在材质 ui 中自定义扩展面板 我发现由于扩展面板的默认样式 我想要在扩展面板上渲染的数据占用了太多空间
  • MySQL 表名按依赖顺序排序

    我想获取按其依赖顺序排序的表名称 例如 如果我有桌子users users orders and orders我想按以下顺序获取表名 users or orders不要紧 orders users orders 如果有办法请帮忙 听起来您正
  • Ubuntu 和 SSLv2_method 的未定义符号

    Canonical 是否在其 openssl 软件包版本中重命名符号 如果是 目的是什么 当我从头开始编译 openssl 1 0 0e tar gz 直接从 openssl org 下载 时 我看到了必要的符号 但 Python 和我 似
  • 如何在 _viewimports 文件中注入依赖项

    我正在尝试在 asp net Core 中生成通用 BaseViewPage 来访问当前用户的身份 为此 我创建了一个 BaseViewPage cs 文件 public abstract class BaseViewPage
  • UICloudSharingController 在 Xcode 11 中显示无限活动指示

    我有以下代码将 UICloudSharingController 导入到 swift UI 中 但第一次集成时 它只显示一个永不停止的活动指示器 然后第二次呈现 通过 sheet 时 没有活动指示器 第一次启动时 我可以看到右上角带有活动指
  • 比较 smarty 中的两个日期

    我有两个各自格式的日期 02 Dec 14 和 17 Dec 14 我想在 smarty 中比较这两个日期 我如何比较这两个日期 请帮忙 提前致谢 如果您将这些日期分配给 Smarty 例如这样 smarty gt assign date2
  • SplitContainer 中的固定面板高度

    我有一个 WinForm 其顶部包含一个 BindingNavigator 一个 splitContainer 其下方有两个水平面板 splitContainer 填充了 BindingNavigator 未占用的空间 我想将底部面板设置为
  • pandas 数据透视表列名

    对于这样的数据框 d id 1 1 1 2 2 Month 1 2 3 1 3 Value 12 23 15 45 34 Cost 124 214 1234 1324 234 df pd DataFrame d Cost Month Val
  • PHP & MySQL 函数从数据库中删除未选中的类别问题

    我有一个 PHP 函数 允许用户选择帖子应该显示的类别 我希望能够在用户取消选中复选框时从数据库中删除用户选择的类别 但我尝试的一切似乎都删除了所有用户类别或根本不起作用 有人可以帮我解决这个问题吗 这是我的 PHP 函数的一部分 它应该删
  • 如何终止使用 shell=True 启动的 python 子进程

    我使用以下命令启动子进程 p subprocess Popen cmd stdout subprocess PIPE shell True 但是 当我尝试使用以下命令杀死时 p terminate or p kill 该命令一直在后台运行
  • 如何从另一个对象的方法访问对象的属性,这是Python中的属性之一?

    我想知道是否可以 如果可以的话在实现组合时如何访问 超级 类实例的属性 下面提供的示例仅在此提供想法并为进一步的解释建立共同点 我想直接从对象 door DoorElement 类型 访问 MiniVan 实例的 id 属性 My Code
  • 从图例中删除 ggplot2 的 geom_point 图标

    注 这是后续这个问题 https stackoverflow com questions 44269950 force ggplot2 to apply a separate legend for each geom 首先是重现数据的代码
  • App Engine 停机时间

    Google 的 App Engine 是否有过多的停机时间 特别是在数据存储写入方面 此外 停机时间似乎安排在流量高的时间段 例如下午中间和凌晨 3 00 这是正常的吗 随着技术的成熟 它会有所改善吗 简短的答案 下午与清晨的停机时间 下