这个服务的配置项有六十个,我认识其中的二十个。这套流程走下来,我从头到尾又确认了一遍。我在心里把这个需求的实现路径理了一遍,然后决定先问一下。从此我多了一条团队规约

这个系统设计得很优雅,跑起来全靠重启。我把它记在心里,没跟任何人说。我打开了链路追踪,一段一段地看耗时,最后定位在连接池。连茶水间都安静了

这个模块的注释比代码还长,说明改过很多次。我打开了这台机器的负载监控,CPU 一直在贴着顶跑。果然现实比段子更精彩

服务之间的调用链越来越长,一次请求要经过六个服务。我叹了口气,然后打开了编辑器。我把这个异步改成了同步,问题解决了,性能下来了。连茶水间都安静了

同一个接口,测试环境返回三秒,生产环境返回三百毫秒,没人知道为什么。我听完沉默了,因为太真实了。我在心里把这次重构的工作量算了一下,决定分三期

后端的每天是在写新功能和查旧问题之间切换。我把这个对象池的容量调大了,创建开销终于降下来。从此我多了一条团队规约

OOM 了,堆 dump 下来 3 个 G,打开一看全是缓存,缓存了三年前的数据。我默默打开了编辑器,准备一步步验证。我把这个公共方法的魔法值抽成了枚举,代码清爽了。真香定律准时生效

查了三小时的 bug,是缓存的锅;又查了三小时,还是缓存的锅。我拉了个小群,把相关同学都叫了进来。我打开了这个接口的入参日志,终于看到那个空字符串了。从此我多了一条团队规约

后端最难的不是写出功能,是让它别崩。我忽然觉得,这可能就是这一行的常态。我把这个服务的日志打到了本地磁盘,终于不受平台限制。那一刻我觉得自己还是很专业的

消息队列堆积了两百万条消息,消费者的日志安静得可怕。我在心里把涉及的所有环节都过了一遍。我把这个定时任务的执行时间错开了,争抢小了很多。复盘会上我们把它列成了案例