GitHub 多次宕机的罪魁祸首竟是 MySQL?

2022 年 3 月 28 日 CSDN

整理 | 苏宓
出品 | CSDN(ID:CSDNnews)

宕机时时有,但近期特别多。这边苹果服务器发生大规模宕机,导致 App Store、Apple Music、Books 等十几项服务中断,另一边全球知名代码托管平台 GitHub 也出现了此种情况。

不过,针对宕机事件,GitHub 迅速进行跟进并公开了最新的调查报告,究其原因,GitHub 多次宕机竟与 MySQL 数据库有关。


GitHub 宕机原因分析


有媒体统计,GitHub 在过去一周中多次中断影响的开发者数量高达 7300 万。根据网友投诉以及 GitHub 官方统计,过去一段时间内的宕机分别发生在 3 月 16 日、17 日、22 日、23 日,每起事件持续时长在 2-5 小时。

GitHub 高级工程副总裁 Keith Ballinger 发文表示,「我知道这会影响许多客户的生产力,我们也非常重视这一点。过去几周发生的宕机事件根本原因是我们的‘MySQL1’集群中的资源争夺,在负载高峰期,影响了 GitHub 大量服务和功能。

根据官方公告,宕机的主要时间线如下:

  • 3 月 16 日 14:09(持续 5 小时 36 分钟)

第一次宕机发生时,GitHub  MySQL1 数据库负载增加,导致数据库访问达到最大连接数。这个数据库接收大量的读/写流量,也被多个服务程序应用。

当中断发生时,GitHub 发现 MySQL1 数据库所有的写入操作都无法进行,影响 Git 操作、webhook、拉取请求、API 请求、issue、GitHub Packages、GitHub Codespaces、GitHub Actions 和 GitHub 页面服务。

经过调查发现,这种情况似乎与峰值负载以及特定情况下查询性能不佳有关。

值得注意的是,GitHub 使用 MySQL 作为所有非 git 仓库数据的主要存储,对其高可用性也有很大的要求。

GitHub 的 MySQL 集群使用经典的主从配置,主集群中的某个节点能够接受写入,其余的从集群节点异步同步来自主服务器的更改,并提供数据的读取服务。基于此,GitHub 可以实现故障转移,即在一个写入失败时,提示主节点崩溃的场景中,会有另一个新的主节点被启用,用以支撑场景实现,避免宕机。

但是这个选项失败了,宕机还是发生了。

  • 3 月 17 日 13:46 (持续 2 小时 28 分钟)

次日,GitHub 还是宕机了,虽然持续时间比前一天要少,但 MySQL1 中呈现的是相同的峰值流量模式和负载。

对此,GitHub 解释道,“在这个峰值前,我们无法确定和解决查询性能问题,我们决定在问题升级前主动进行故障转移。

不幸的是,这导致了一种新的负载模式。在新的故障转移主服务器过程中引入了连接问题,并且 GitHub 努力重置这些连接时,应用服务再次无法连接到 MySQL1。

基于此,GitHub 能够确定负载模式,随后实施了一个索引来修复主要的性能问题。

  • 3 月 22 日 15:53 UTC(持续 2 小时 53 分钟)

虽然 GitHub 在前两次中减少了负载,但是对于最终结果他们也并不是有 100% 的信心。

因此,在第三次宕机发生之前,GitHub 在数据库代理上启用了内存剖析,以便更仔细地观察峰值负载期间的性能特征。同时,当故障发生,以及客户对 MySQL1 的连接失败时,GitHub 再次执行主故障切换进行了恢复。

  • 3 月 23 日 14:49 (持续 2 小时 51 分钟)

发生了第四次宕机时,GitHub 限制了 webhook 的流量,并在其数据库无法处理峰值负载时使用该控件来缓解未来的问题。 


解决方案


截至目前,GitHub 并不能完全阻断宕机事件再次发生的可能性。

不过,为了防止这些类型的事件在未来发生,GitHub 表示,“我们已经开始对这个特定数据库在高峰期的负载模式进行审计,并根据这些审计进行一系列的性能修复。作为其中的一部分,我们正在将流量转移到其他数据库,以减少负载并加快故障切换时间,同时审查我们的变更管理程序,特别是与生产中高负载期间的监控和变更有关的程序。”

作为一家托管服务平台,GitHub 时不时的宕机事件,无疑对开发者而言是一种不好的体验。对于此,GitHub 表示,对这些中断造成的负面影响深表歉意。也承诺将快速处理中断问题并最大限度地减少宕机的时间。

在此次宕机事件中,你是否受到了影响?

参考:https://github.blog/2022-03-23-an-update-on-recent-service-disruptions/

END



新程序员001-004》全面上市,对话世界级大师,报道中国IT行业创新创造


  
  
    
— 推荐阅读 —
   
   
     
☞华为回应俄罗斯公司测试鸿蒙系统;小米辞退不能胜任工作员工终审败诉;Ubuntu有了滚动发行版|极客头条
☞从“投毒”到“抗议软件”,开源政治化的潘多拉宝盒已打开
☞“看看人家苹果和亚马逊!”嫌薪酬太低,谷歌员工“炮轰”高管

点这里↓↓↓记得关注标星哦~ 

一键三连 「分享」「点赞」「在看」

成就一亿技术人

登录查看更多
0

相关内容

一个开源的关系型数据库,开发者为瑞典 MySQL AB 公司。在2008年1月16号被 Sun 公司收购。而2009年,SUN 又被 Oracle 收购.目前 MySQL 被很多互联网企业所使用。有体积小、速度快、总体拥有成本低,开放源码等优点
「大规模图神经网络系统」最新2022综述:从算法到系统
专知会员服务
113+阅读 · 2022年1月14日
专知会员服务
30+阅读 · 2020年12月21日
【2020新书】实战R语言4,323页pdf
专知会员服务
100+阅读 · 2020年7月1日
【实用书】流数据处理,Streaming Data,219页pdf
专知会员服务
76+阅读 · 2020年4月24日
【ACL2020-Facebook AI】大规模无监督跨语言表示学习
专知会员服务
33+阅读 · 2020年4月5日
数据库技术新版图-Serverless数据库 | Q推荐
Python:Bug 官网不要了,全迁去 GitHub!
CSDN
1+阅读 · 2022年2月25日
新年第一天,3000台Apache服务器宕机
CSDN
0+阅读 · 2022年2月16日
本月第三次!亚马逊AWS再次遭遇宕机
CSDN
0+阅读 · 2021年12月27日
是时候聊一聊ProxySQL功能测试了
InfoQ
2+阅读 · 2021年11月17日
国家自然科学基金
0+阅读 · 2015年12月31日
国家自然科学基金
2+阅读 · 2014年12月31日
国家自然科学基金
0+阅读 · 2012年12月31日
国家自然科学基金
0+阅读 · 2012年12月31日
国家自然科学基金
1+阅读 · 2012年12月31日
国家自然科学基金
0+阅读 · 2011年12月31日
国家自然科学基金
0+阅读 · 2009年12月31日
国家自然科学基金
0+阅读 · 2008年12月31日
Arxiv
0+阅读 · 2022年4月20日
Arxiv
0+阅读 · 2022年4月19日
Arxiv
27+阅读 · 2020年6月19日
VIP会员
相关基金
国家自然科学基金
0+阅读 · 2015年12月31日
国家自然科学基金
2+阅读 · 2014年12月31日
国家自然科学基金
0+阅读 · 2012年12月31日
国家自然科学基金
0+阅读 · 2012年12月31日
国家自然科学基金
1+阅读 · 2012年12月31日
国家自然科学基金
0+阅读 · 2011年12月31日
国家自然科学基金
0+阅读 · 2009年12月31日
国家自然科学基金
0+阅读 · 2008年12月31日
Top
微信扫码咨询专知VIP会员