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

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

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

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

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

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

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

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

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

11621 次点击
所在节点    程序员
121 条回复
NoString
2023-01-28 20:49:33 +08:00
enchilada2020
2023-01-28 21:07:08 +08:00
@NoString 卧槽 USD 当 JPY 可太吓人了。。。
dusu
2023-01-28 21:21:08 +08:00
事故长期积累后 可以形成自己的一套报警机制的
什么问题都可以思考是否有必要监控起来
甚至出了问题是否能做到自动修复
久而久之 你看到故障报警 压力也不会这么大了
wonderfulcxm
2023-01-28 21:24:05 +08:00
被黑删除网站并且没有备份
dusu
2023-01-28 21:25:47 +08:00
@dusu 拿题主三个故障来说
1. 提前做好 nginx 状态监控 响应时间超过阈值就报警,同时提前部署 waf 相关系统
2. 监控数据库响应和连接数 异常就报警 提前预案
3. 监控部分资源是否能正常返回 超时或者状态码异常就报警 或者做一套前后端故障自动切换方案
kaneg
2023-01-28 22:13:16 +08:00
@orzwalker111 我们有一个服务出现过类似的错误,对外的 API 请求超时默认一分钟,该 API 平时一般在 1 秒内就可以返回,所以很长一段时间都风平浪静。但有一次该 API 服务挂了,我们的 API 请求都被挂住 1 分钟,线程池很快就被耗光,所有依赖线程池的其他业务都被连累了。
collen
2023-01-28 22:49:42 +08:00
查询是不是我前段时间写的 BUG 爆发了现在的 BUG
还真 TM 的是 赶紧找个奇怪的借口
MeteorCat
2023-01-28 23:36:30 +08:00
文件描述符导致 504
maojun
2023-01-29 02:21:01 +08:00
@adoal 看到你这笑出声 😂
chenqh
2023-01-29 02:25:18 +08:00
再来个 python redis lock 没有设置 lock 时间,导致 key 被 lock 的时候,进程重启之后,key 永远不释放了
LawlietZ
2023-01-29 08:50:46 +08:00
op 最后怎么解决的 也分享一下啊
ppboyhai
2023-01-29 08:55:30 +08:00
@kestrelBright 遇见的事儿多了,经验就来了,都是这么积攒的泪史
ppboyhai
2023-01-29 08:57:22 +08:00
@orzwalker111 哈哈哈哈哈哈哈哈,狠好的经历
ppboyhai
2023-01-29 09:00:15 +08:00
@NoString 经历丰富的很啊,老兄
sss15
2023-01-29 09:04:41 +08:00
生产上 win 服务器,加了一块云磁盘,分配磁盘空间的时候,分区搞错了,就打算删除掉重新分配,结果误操作吧整个磁盘分区表弄丢了,数据库、web 服务、文件全在服务器上,故障持续 1.5 天,晚上睡觉都在想明天怎么办,期间淘宝和网上找了数据恢复公司在线恢复,没有一个能成功的。最后连蒙带猜加上计算机基础知识,通过算扇区大小竟然重新重建了分区表。
ppboyhai
2023-01-29 09:09:57 +08:00
1 、生产服务器遇到了 DDOS 攻击

生产环境是 gitlab 和其他中间件共存的服务器,由于 gitlab 属于被高频率漏洞攻击的中间件,发现被植入了 ddos 肉鸡病毒,每当肉鸡操控者想攻击某某的时候就会调用各肉鸡的流量去攻打,此时 CPU 和内存会瞬间拉至封顶。
解决方案:首先是人工清除,定位异常进程,找到进程触发的病毒脚本,然后逐个清理后,恢复正常。
之后采用阿里的安全组件,10 分钟结束战斗,每月每台服务器多花 120 块钱的样子。

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

呼叫了集团 DBA 半天才定位某个参数,各种拉日志定位问题。

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

这个还是由于公司一些工程师经验不足导致 nginx.conf 配置错误,但是又没有很好的备份上个版本。
建议处理方案:采用 nginx web ui 记录每一次修改记录,也可以快速回滚到上个版本

最后想说的是:一定要敬畏生产环境,才能睡个好觉,睡的安心。

不要嫌麻烦,各类监控组件一定怼上! 告警一定要先于业务发现,否则惨兮兮

@LawlietZ
corcre
2023-01-29 09:17:20 +08:00
遇到过一个, 域账号验证超时, 但是几个站点用的是同一个域服务器, 只有一个站点登录不上, 别的站点很顺畅, 本地 debug 发现请求发送到域服务器以后就超时了, 域服务器状态也很正常, 查了一上午也没查出来为啥, 后来重启了一下又没事了(到现在都不知道是为啥
corcre
2023-01-29 09:19:04 +08:00
还有一个机房空调坏了把室温都烤到 50 度所有服务器全部宕机算吗🐶
解决方案: 修空调🐶🐶🐶
fiypig
2023-01-29 09:20:52 +08:00
最近一个定时器的问题,搞崩好几次 General error: 2006 MySQL server has gone away
corcre
2023-01-29 09:23:07 +08:00
你这么一说我就又想起来一个, 在老东家的时候, 客户说硬盘满了, 数据装不下了什么的, 然后实施过去了, 看着人家两盘位的 NAS, 把人家的硬盘带电拔下来一个, 准备装个大容量的上去, 结果就是装上去了没反应, 原来的硬盘装上去了识别不了, 主管老板大老板一个个排着队跑过去被客户叼了一顿, 后来我也不知道怎么处理的...
这是我职业生涯里面看过最搞笑的生产环境事故...

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

https://www.v2ex.com/t/911105

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

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

© 2021 V2EX