怎么搞的?
在我们的计划维护窗口3月17日至18日,科罗拉多州数据中心的一系列事件使Mathematics Stack Exchange在维护完成后几个小时处于只读模式。
TL;博士
网站已恢复。维护窗口于3月18日01:28 UTC正式关闭,此时所有其他站点都已完全运行,但Mathematics仍处于只读模式,直到大约11:46 UTC手动更正。
是什么导致了这个问题?
许多因素导致了这个问题本身以及我们未能认识到它
- 作为手动故障切换过程的一部分,由于我们已经经历了几个月的性能问题但尚未解决。
- 这涉及到将网站流量转移到我们在科罗拉多州的网络服务器,在那里他们可以从那里的中学读取数据,而不会受到纽约运营的任何影响。
- 基本上,应用程序不应尝试写入只读辅助文件;如果连续的尝试失败,出于安全考虑,源站点会自动切换到只读模式,因为这清楚地表明出现了问题。
- 在这种情况下,数学网站确实尝试在终端用户的一系列非常特定(非恶意)的事件之后写入只读的二级数据库。
- 因为这是在所有其他站点都处于只读模式时发生的,所以有关此站点的任何通知都会被静音以进行维护,因为我们有意将整个网络设置为只读,并且进行的维护也会导致严重的警报噪音。
什么影响了持续时间?
在我们的维护窗口结束时,我们抽查了一些东西,包括一些特定的网站(当然不是全部)。我们不会在浏览器中手动打开每个网站来确保横幅消失,也不会测试我们是否可以成功发布评论或对帖子进行投票。
在这种情况下,我们在01:30 UTC检查的所有地方看起来都很好,包括我们的开源监控工具,操作服务器-这为我们的数据库状态提供了一个极好的脉冲。如果一个特定站点的主数据库无法写入,我们肯定会在那里看到它。但网站本身并没有显示其在那里的状态——这显示在其他地方的内部仪表板上。所以我们上床睡觉了。
我们如何改进?
我们可以改进此场景的内部通知和解决时间:
- 我们可以手动检测站点何时自动切换为只读,以响应上述场景{完成}
- 我们可以在监视器上实现自动化并发出警报
- 我们可以进一步改进应用程序在维护期间尝试写入数据库的方式
- 我们可以将以下内容添加到维护窗口Runbook中:
- 除了OpServer和其他检查外,还检查内部仪表板{完成}
- 增加我们抽查的站点数量
- 等待一个小时并检查meta(尽管也有许多单独的meta站点需要检查)