阿里云「飞天发布时刻」2024来啦!新产品、新特性、新能力、新方案,等你来探~ 了解详情
写点什么

调查报告深入揭示了 GitLab.com 服务中断 18 小时的根本原因

  • 2017-02-28
  • 本文字数:1116 字

    阅读完需:约 4 分钟

在结束故障并清除了问题后,GitLab 给出一个帖子,总结了导致长达 18 小时服务中断的原因、他们计划如何继续发展,以及整个事故是如何发生的。

数据库的高负载在一开始被诊断为大量垃圾邮件的涌入。但是在进一步审查后,明确了是由于无事生非的家伙将一位 GitLab 员工举报为滥用,事故因此而恶化了。另一位员工在审查滥用报告时并没有意识到被举报的账号其实是团队中一位工程师的账号,因此意外地删除了该账号:

我们随后发现这一部分负载是由一个后台任务试图去移除 GitLab 员工及其相关数据所导致的。这就是他们的账号被标识为滥用并意外地被删除的结果。

根据作为当事人的工程师在故障报告中的记录,他的账号被删除是因为“我们收到来自一位用户的垃圾邮件报告,该用户是在发出垃圾邮件报告的10 分钟前创建的。这就产生了人为错误,删除了我的所有项目。”

由于数据库负载的加重,预写式日志 (WAL,Write-Ahead Log) 在得到从数据库处理之前就被主数据库清洗掉了,导致主数据库停止向从数据库复制。不幸的是,WAL 归档也并未被打开。WAL 归档会要求数据段在得到移除许可前被归档。

由于复制已经停止了,需要对从数据库做一次重建。启动复制需要一个空的数据目录,因此一位工程师手工清理干净了一个目录。但该目录并非是从数据库的数据目录,他意外地清除了主数据库的数据目录。

虽然主数据库的不幸损失应该只会让站点关闭一小段时间,但是对于GitLab 团队而言事情更糟。在努力恢复数据的过程中,团队发现自己的备份无法工作。作为备份的主要方法的 pg_dump 由于版本不匹配的问题而不能运行,因此并未备份任何东西。没有人知道存在这个失败,通知邮件因为不支持 DMARC 被服务器拒收。

其它的备份方法也因为各种原因而无法使用,团队并未对数据库使用 Azure 磁盘快照。即使使用了磁盘快照,在线取回数据也将花费很长的时间:

每个存储账号的限制大概为 30TB。恢复快照时使用同一存储账号中的主机通常会完成得很快。但是当用在不同存储账号中的主机时,完成该过程将需要数小时乃至数天。

唯一的方法是恢复事故发生之前六个小时的 LVM 快照。

团队在改进他们的修复恢复过程中碰上了 14 个问题,最终完成了快照的恢复。他们在事故发生后两个星期中实现了 WAL-E ,功能是将 WAL 数据段实时地归档到 AWS S3。对一次恢复的测试表明,这种备份类型在两个小时以内就可以恢复到指定的时间点。此外,他们正在实现一个自动测试PostgreSQL 备份恢复的系统。

查看英文原文: GitLab.com Postmortem Digs into Root Causes of 18 Hour Outage


感谢薛命灯对本文的审校。

给InfoQ 中文站投稿或者参与内容翻译工作,请邮件至 editors@cn.infoq.com 。也欢迎大家通过新浪微博( @InfoQ @丁晓昀),微信(微信号: InfoQChina )关注我们。

2017-02-28 18:002676
用户头像

发布了 227 篇内容, 共 71.4 次阅读, 收获喜欢 27 次。

关注

评论

发布
暂无评论
发现更多内容

文心一言 VS 讯飞星火 VS chatgpt (149)-- 算法导论12.2 4题

福大大架构师每日一题

福大大架构师每日一题

Java医院绩效考核系统源码支持二次开发

源码星辰

Java

每日一题:LeetCode-76. 最小覆盖子串

半亩房顶

面试 算法 LeetCode 刷题 字符串

软件测试/人工智能|Python 数据类型转换解析:理解数据之间的灵活转换

霍格沃兹测试开发学社

一文读懂 ChatGPT 工作原理

秃头小帅oi

低代码 AIGC ChatGPT

11 | 排序(上):为什么插入排序比冒泡排序更受欢迎

鲁米

大型语言模型在实体关系提取中的应用探索

数由科技

Embedding LLM rag 实体关系识别

商城开发

Geek_8da502

软件测试/人工智能|Python 变量解析:从基础概念到内存地址探究

霍格沃兹测试开发学社

随着教育行业的内卷,持续激活平台用户体验是关键

Geek_2305a8

解决云电脑无法使用本地终端连接的USB设备

天翼云开发者社区

云计算 云电脑

安全加密传输大文件对金融行业的意义以及重要性

镭速

大文件传输 加密传输大文件

数实融合!低代码推动工业数字化转型走“深”向“实”

优秀

低代码 数字化转型 工业数字化

Spring Boot 项目代码混淆实战:保护代码安全,防止泄露

云电脑:IO虚拟化实现的技术分析

天翼云开发者社区

云计算 虚拟化 云电脑

最新大文件传输解决方案,一站式解决网站文件上传下载速度慢问题

镭速

大文件传输

结算系统开发,直销系统开发,交易所开发,dapp开发,公链开发 商城开发,

Geek_8da502

Microsoft Word LTSC 2021 for mac v16.79.2永久激活版

mac

word 苹果mac Windows软件 文字处理软件

VPN证书过期问题梳理

Lane

Spring到底是如何解决循环依赖问题的?

高端章鱼哥

spring 循环依赖

如何实现通过API接口对商品信息进行实时更新和维护?

技术冰糖葫芦

API 文档

【哈尔滨学院主办】第三届高性能计算与通信工程国际学术会议(HPCCE 2023)

搞科研的小刘

通信 计算机 高性能计算 通信工程

重磅!天翼云斩获2023年中国通信学会科学技术奖一等奖

天翼云开发者社区

云计算

Amoro 试用&贡献活动 | 10月社区评选揭晓

Amoro Community

大数据 开源 湖仓一体

腾讯云大数据ES荣获信通院优秀案例奖,云原生实力再获认可!

腾讯云大数据

ES

LCM:大大加快生成高质量图像的新方法

互联网工科生

图像生成 LCM

软件测试/人工智能|Python 数据类型解析:探索编程世界的多样性

霍格沃兹测试开发学社

Netty源码学习7——netty是如何发送数据的

不在线第一只蜗牛

学习 源码 Netty

如何撰写How-To文章:7个高效步骤(新手SEOer向导)

九凌网络

特权账号管理之医疗行业篇

尚思卓越

数据库 运维 网络安全

开源 | Spark Commiter 深度解读:Apache Spark Native Engine

网易数帆

大数据 spark 开源 Gluten

调查报告深入揭示了GitLab.com服务中断18小时的根本原因_微软_David Iffland_InfoQ精选文章