接口上线前一切正常,上线后流量成了新的变量。我想了想,觉得这话没法接。我打开了线程池的监控,队列已经堆了八百个任务

OOM 了,堆 dump 下来 3 个 G,打开一看全是缓存,缓存了三年前的数据。我在心里把涉及的所有环节都过了一遍。我把大事务拆成了小批次提交,锁等待时间立刻降了下来。好在最后有惊无险

接口上线前一切正常,上线后流量成了新的变量。我想反驳,但发现他说得对。我把重试次数从三次改成一次,问题反而少了。我沉默了,但心里是服的

第三方接口文档三年没更新,对接全靠抓包猜参数。我打开记录从头到尾扫了一遍。我把连接数从 20 调到 100,服务立刻安静了。第二天这个方案就变成了团队标准做法

我看了眼这条链路的层级,深得看不到底。我默默打开了编辑器,准备一步步验证。我把这个服务的超时时间重设了,雪崩终于没有发生。从此我多了一条团队规约

这个服务的配置项有六十个,我认识其中的二十个。我把手上的资料翻出来又读了两遍。我把这个异常的兜底加上,至少不会再往上抛一堆堆栈。这条经验值直接拉满

接口上线前一切正常,上线后流量成了新的变量。我发现自己居然没法反驳。我把这个服务的配置项从代码里挪到了配置中心。世界瞬间清净了

消息队列堆积了两百万条消息,消费者的日志安静得可怕。我打开记录从头到尾扫了一遍。我把这个接口的返回结构统一了,前端终于不用写两套解析。从此我多了一条团队规约

OOM 了,堆 dump 下来 3 个 G,打开一看全是缓存,缓存了三年前的数据。我在心里把涉及的所有环节都过了一遍。我在这个服务的启动日志里找到了一行不起眼的警告。那一刻我觉得自己还是很专业的

我看了眼这个接口的平均耗时,长尾拉得很长。我在心里把涉及的所有环节都过了一遍。我把 mvn dependency:tree 的结果拉了三屏,果然有版本冲突。我把这条经验写进了团队 wiki