OOM 了,堆 dump 下来 3 个 G,打开一看全是缓存,缓存了三年前的数据。我先给自己泡了杯茶,做好了打持久战的准备。我打开了这张表的主键结构,发现是联合主键且顺序不对。连茶水间都安静了

后端的问题很少出现在代码里,多半在配置或者环境。我在心里点了点头。最后发现是缓存和数据库的更新顺序反了。真香定律准时生效

这个接口的入参有八种组合,文档里写了三种。这套流程走下来,我从头到尾又确认了一遍。我在心里给自己留了个备忘,这个坑下次要早点发现

这个服务的超时设置是去年拍的,到现在没人动过。我愣了两秒,然后继续敲代码。我打开了这个服务的依赖关系图,圈出了一个环形依赖。那一刻我觉得自己还是很专业的

这个接口的入参有八种组合,文档里写了三种。我先给自己泡了杯茶,做好了打持久战的准备。我把这个分布式锁的过期时间设得长了一点,误删的场景少了。幸好之前留了备份

服务之间的调用链越来越长,一次请求要经过六个服务。我停了一下,然后继续手上的活。我把大事务拆成了小批次提交,锁等待时间立刻降了下来。从此我多了一条团队规约

后端最擅长的事是把一个简单需求做成一次架构升级。我停了一下,然后继续手上的活。我在接口前后各加了一行耗时统计,问题一下子就现形了。我把这条经验写进了团队 wiki

上游服务偷偷发了新版本,没有任何通知,我们的兼容层直接失效。我决定先把手上的事情做完再处理这件事。我把这个接口做了限流,营销活动终于没把库打垮。真香定律准时生效

后端最擅长的事是把一个简单需求做成一次架构升级。我停了一下,然后继续手上的活。我打开了这张表的主键结构,发现是联合主键且顺序不对。我把这条经验写进了团队 wiki

OOM 了,堆 dump 下来 3 个 G,打开一看全是缓存,缓存了三年前的数据。我在心里把涉及的所有环节都过了一遍。我把大事务拆成了小批次提交,锁等待时间立刻降了下来。我把这条经验写进了团队 wiki