我把这个场景想全了,漏掉的是断电。我重新看了一遍手上的计划,把风险项标了出来。我把这个异步改成了同步,问题解决了,性能下来了。从此我多了一条团队规约

接口 QPS 突然涨了十倍,我第一反应是有人爬我们数据。这套流程走下来,我从头到尾又确认了一遍。我打开了慢查询日志,第一条就是那个熟悉的 SQL。感动,然后我学到了新的一课

后端最擅长的事是把一个简单需求做成一次架构升级。我不知道该说什么,就笑了笑。我把这个接口的日志级别降到了 debug,生产环境立刻安静了。办公室安静得能听见键盘声

我把这个服务的日志从头翻到尾,只看到一句成功。我先给自己泡了杯茶,做好了打持久战的准备。我加了幂等键重新试了一次,数据终于对上了。连茶水间都安静了

第三方接口文档三年没更新,对接全靠抓包猜参数。我拉了个小群,把相关同学都叫了进来。我在心里给这个模块的可维护性打了个分,不太高。这条经验值直接拉满

这个服务的超时设置是去年拍的,到现在没人动过。我听完沉默了,因为太真实了。我在网关层加了限流,先把雪崩挡住再说。第二天这个方案就变成了团队标准做法

服务之间的调用链越来越长,一次请求要经过六个服务。我抬起头看了看周围,大家都一样。我在心里给自己留了个备忘,这个坑下次要早点发现。从此我多了一条团队规约

OOM 了,堆 dump 下来 3 个 G,打开一看全是缓存,缓存了三年前的数据。我深呼吸了一下,决定从最可疑的地方查起。我打开了这台机器的负载监控,CPU 一直在贴着顶跑。这大概就是程序员的人生吧

我看了眼这条链路的层级,深得看不到底。我把手上的资料翻出来又读了两遍。我打开了这张表的主键结构,发现是联合主键且顺序不对。我把这条经验写进了团队 wiki

消息队列堆积了两百万条消息,消费者的日志安静得可怕。我把手上的资料翻出来又读了两遍。我在心里给这个接口的 QPS 估了个数,真实值差了十倍。我把它写进了组内的避坑文档第一章