注册并分享邀请链接,可获得视频播放与邀请奖励。

meme
@oooodjdjd
🐱职业打工人,欢迎跟我一起进入web3 5年区块链经验丨投研分析丨知识成长分享丨web3+AI求职 丨 🐾欢迎合作(小作文100%回复):froussimis@gmail.com
加入 February 2025
494 正在关注    18.4K 粉丝
谁没有工作犯错过呢? 4.4 亿美元,453 亿人民币,和一条 rm -rf / 三个数字背后是三个程序员。都是凌晨犯的错,都是一行代码,都没有后悔药 4.4 亿美元,45 分钟 2012 年 8 月 1 日,骑士资本。 一个程序员在部署新交易算法时,八台服务器里漏更新了一台。旧代码里藏了一个早已废弃的”测试用”功能——它会在交易指令发出后立刻以市价反向买入,无限循环。 早上 9:30 纽交所开盘,45 分钟内这台服务器疯狂自动交易,买了 70 亿美元股票。等他们发现并关停,已经亏了 4.4 亿美元。 骑士资本,美国最大的做市商之一,三天后破产,被 Getco 以跳楼价收购。 事件的根因报告里有一句话:”部署流程缺少自动化校验,依赖人工逐台确认。” 翻译成程序员能听懂的话:没有 CI/CD,手动部署,八台服务器里有一台是漏网之鱼。 453 亿人民币,一天蒸发 2013 年 8 月 16 日,光大证券。 一个交易员在套利系统中输入了一个错误的参数。系统自动下单,瞬间买入 234 亿元股票。上证指数 2 分钟内暴涨 5.6%,70 多只权重股涨停。 市场以为是国家队救市,散户疯狂跟风买入。下午光大才发现是乌龙,紧急卖出平仓,当天净亏 1.94 亿。但更惨的是后续——罚款 5.23 亿,四位高管终身禁入,股价跌到只剩三分之一。 事发后舆论说”交易员手抖”,但内行知道不是一个人的问题。系统的订单校验、风控熔断、异常检测——三道防线全部失守。 前两行是程序员写的。后两行也是。 一条 rm -rf / 2017 年 1 月 31 日,GitLab。 凌晨,一个运维工程师在排查数据库主从同步延迟。他在一台从库上操作,准备删除一些过期的备份文件。 他敲了 rm -rf /var/opt/gitlab/backups/。 问题是这个路径不存在。他打错了。他打的是 rm -rf /。 而且他在主库上操作的。 六小时后,GitLab 官方在 Twitter 上直播恢复过程。全球几万个仓库的数据全没了。最终他们从一台漏备份的临时服务器上恢复了大部分数据,但还是丢了六小时内的所有 issue 和 MR。 事故复盘里有一段特别刺痛我:那台临时服务器上的备份来自一个工程师”顺手”做的定时脚本——他甚至不记得自己写过。 2021 年某电商大厂,一个实习生在生产环境跑了一条 SQL:UPDATE users SET status = 0。没有 WHERE。全量更新,把所有用户状态改成禁用。整个平台瘫痪 40 分钟。 2020 年某出行平台,一个后端在 Redis 上执行 FLUSHALL,清空了所有缓存。流量瞬间打到数据库,数据库扛不住,App 显示”网络异常”持续两小时。 2019 年某金融科技公司,一个程序员在配置中心改了”超时时间”参数,把 5 秒改成了 5 毫秒。所有 RPC 调用全部超时,交易中断一整夜。 祸到底能多大 上面这些其实都不算最大的。 2017 年 WannaCry 勒索病毒,150 个国家、20 万台电脑被感染,英国 NHS 医院系统全面瘫痪,手术被取消、急诊被拒收。源头是什么?美国 NSA 写的一个 Windows 漏洞利用工具 EternalBlue,被黑客组织 Shadow Brokers 泄露了。 NSA 的程序员写这段代码的时候,大概没想到它有一天会成为全球最大的网络攻击武器。 还有一次 1996 年,阿丽亚娜 5 号火箭首飞。升空 37 秒后爆炸,损失 3.7 亿美元。事故原因是——一段阿丽亚娜 4 号上跑得好好的代码,被直接复制到 5 号上用。火箭速度不一样,一个 64 位浮点数被塞进 16 位整数,溢出。导航系统崩溃,火箭自毁。 同一个代码,同一个函数。在阿丽亚娜 4 号上跑了 15 年没事,在 5 号上 37 秒就炸了。 程序员闯祸的三个段位 青铜:生产环境误删数据、没有 WHERE 的 UPDATE、缓存全清——影响单个服务,回滚能救。 白银:配置错误导致全链路雪崩、自动化脚本无校验——影响全平台,几小时起。 王者:写了一段代码,十年后的维护者看不懂,删了又不敢删,改了又怕出事。那个被封印在 repo 深处的函数,才是程序员能闯的最大的祸。 毕竟真正的灾难不是一行写错的 rm -rf。真正的灾难是三年前你写的那个”TODO:临时方案,后面优化”,整个团队接盘五年都不敢动它。 七年全栈,外包干到架构。主页有《从CRUD到架构师》手册自取。觉得有用点个关注,一起往上走。
显示更多