聊一聊程序员遇见的生产环境事故以及如何处理定位的?

2023-01-28 16:58:04 +08:00
 ppboyhai

这么多年程序员生涯各位大佬都遇见哪些生产事故?是否经历过事故后客户无休止电话轰炸与追问,是如何顶住压力解决生产事故的,都来唠嗑

首先说说我这边,曾经某一个周六,三个生产环境同一天崩溃,压力瞬间铺面而来,老板接到客户的电话一个接着一个。那瞬间真是需要莫大的心里承受能力。

三个生产环境的崩溃分别是:

1 、生产服务器遇到了 DDOS 攻击

2 、生产数据库参数被某某修改,查询贼拉拉慢,各种请求超时

3 、前端 Nginx 转发异常,请求各种不通

各位大佬还遇见哪些生产环境事故,是自己动手解决的还是呼叫炮火支援的

13468 次点击
所在节点    程序员
121 条回复
ppboyhai
2023-01-29 09:23:53 +08:00
@corcre 同样遇见过空调问题 😂
huluhulu
2023-01-29 09:30:13 +08:00
用 32bit 记录消息毫秒时间戳用来当消息先后标志,当设备连续运行超过 49 天时,溢出导致前后消息的时间戳大小异常,会丢几个消息,恰好丢的时关键信息时,会引起不必要的 log 。
shakoon
2023-01-29 09:30:43 +08:00
听说过一个略搞笑的严重事故。dba 使用一高权限用户在用完 navicat 后本来是想关闭连接的结果点错成了删除,然后库就没了。这事搞笑在,本来这个库有很复杂的多点备份策略,本地副本异地副本若干个,但都因为这个正常发出 drop 给同步到了各个副本,所有的也被 drop 了。一群人黑着脸花了好久用半天前的全库离线备份归档+binlog 给慢慢恢复回来的。后来听说他们使用这种高权限用户时都是一人操作一人旁边盯死还有一人完成后复核,navicat 也被禁用了,找了个开源的其他工具魔改,delete 、drop 这些提交时要三个账号密码验证。
dog82
2023-01-29 09:33:22 +08:00
我碰到过 redis 里面就几千条数据,但是占用 4G 内存的情况
matepi
2023-01-29 09:39:03 +08:00
简单做的:
报警监控先一眼,确定具体节点和影响程度。重启回退扩容三板斧弄一把。

几乎每周都有分析深度的:
还不行就 threaddump 拉一拉,gclog/oom 看一看,lsof 查一查,数据库报告拉一个。然后各种联系开发查。
matepi
2023-01-29 09:42:00 +08:00
@shakoon
能被同步的是不应该叫备份、应该叫冗余。
备份是不应该被短时间内同步的,要逐步时间级别地、增量备份。
冗余和备份各有作用,不能互相替代。
Light3
2023-01-29 09:46:32 +08:00
小外包给大公司做的微信活动(真送 1000 块钱的鞋)砍一刀
直接给垃圾服务器 砍挂了..
TUNGH
2023-01-29 09:50:36 +08:00
好问题
dqzcwxb
2023-01-29 09:58:05 +08:00
@brianinzz #24 都是用 lua 脚本实现的加锁与设置超时时间的原子性,sping 有对应的实现可以直接用 lua 脚本都给你写好了
NoKey
2023-01-29 10:03:13 +08:00
@orzwalker111 很好奇,你们没有代码检视入库么,特别是这种旧代码判断逻辑的修改,应该是相对严格的审核才对
LxnChan
2023-01-29 10:16:40 +08:00
遇到的问题基本都会写 blog
https://lxnchan.cn
awalkingman
2023-01-29 10:18:17 +08:00
@sss15 大难不死 必有后福(听得我心惊胆战的
cwcc
2023-01-29 10:27:35 +08:00
事故分很多级别,有的很小,比如前端页面错乱,格式炸了的小问题,但不影响主体使用。这个占多数,就是网站 css 改炸了。还有运营事故比如光纤被动物咬断,跑了个死循环也比较常见。后面几种大事故一般都是缩小定位,但死循环这个需要代码有很好的模块式分离,耦合过大就比较难定位了。敏捷开发快速迭代时最好在生产环境装上调试工具以备不时之需。
ppboyhai
2023-01-29 10:30:09 +08:00
@cwcc “在生产环境装上调试工具以备不时之需” 这个想法不错
sadfQED2
2023-01-29 11:00:24 +08:00
1 、mysql 机房交换机故障,偶发丢包。导致各种神奇的 MySQL 慢查询。研发、运维、DBA 我们一群人排查了一个多月才找到问题。

2 、线上服务机房 IP 写错了,公司核心服务基本全崩溃。
NoKey
2023-01-29 11:02:01 +08:00
@NoString 我看了你这两篇博文,有几个问题想了解一下,绝非杠,单纯从开发角度来讨论:
1. 既然你们的服务涉及的用户,金额都是大量的,为什么没有严格的代码 review ,测试,预发布环境等上线前的质量把控
2.看到有地方提了 mysql 的编码问题,这个量级的用户、金额,应用开发前就应该统一所有编码,这个是项目启动的基本要素

能出这些问题,感觉你们技术负责人很野啊~
orzwalker111
2023-01-29 11:08:28 +08:00
@NoKey 是有的,一来自己大意没注意这块,另一方面 review 这些现在更多是看业务逻辑了,不太有精力和时间逐行检查逻辑了。再就是恰逢组织架构调整,最后就给发生了。。。后来立了一堆这个排名系统的代码上线规范
Naruto129
2023-01-29 11:11:42 +08:00
@u21t20o15 之前也有过类似的情况,我们都是要做复盘的,然后会上投诉他们干扰排查,这个时候我们需要减少干扰,搞过一两次好多了。
gkiwi
2023-01-29 11:26:06 +08:00
先说个诡异的的 CDN 相关的 bug ,好几年了。

记得是个国庆期间,当时负责的平台,有用户反馈白屏,尝试了回滚、重新上线怎么都有零星用户报页面白屏(而且是不同地区,但主要集中在两三个地方),而且之前是没有过的,报白屏的用户稳定复白。

最后实在无奈,给用户电话,加了 QQ 远程调试了下他的页面,发现一个 cdn 上的 js 报错,但是报错位置拉下来傻眼了,引用同样的 url ,在北京拉下来一个内容,在用户那里,拉下来内容发现有一个字符被替换了。。后来拉着公司 CDN 同学排查也是无解。后来解决方案是把线上 CDN 全部手动清理,之后回源然后就好了。(根 case 没找到,因为当时重新上线也不行,很诡异)
zhoudaiyu
2023-01-29 12:21:32 +08:00
@fiypig 咋解决的啊

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://ex.noerr.eu.org/t/911105

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX