高负载下 readiness 一直抖时,实例其实不是“坏了”,而是在容量边缘来回掉线
readiness 抖动最烦的地方,不是它让实例直接死掉,而是它让实例处在一种很难看的半失控状态:
Java
这里按页继续往后翻,仍然围绕接口变慢、数据库等待、线程池、JVM 与线上问题排查这些问题。
readiness 抖动最烦的地方,不是它让实例直接死掉,而是它让实例处在一种很难看的半失控状态:
线上一旦出现下面这些现象,团队很快就会说出同一句话:
重复消费最让人困惑的地方,不是系统完全没做幂等,而是明明做了检查,事故还是落到了业务结果上。团队翻幂等表时经常能看到记录、状态也像对的,可订单还是扣重了、券还是发重了、回调还是打了两次。
我第一次感受到“复盘写完了,但方法没留下来”,是在一次缓存批量过期事故之后。
我第一次真正意识到“时间线会记废”,是在一次已经做过回滚的事故里。
20:13,先响起来的是订单确认页的投诉。
线程池隔离这件事,很多团队都是等线上被打疼以后才真正重视。项目刚起步时,共用一个池子看起来很省心:任务量不大,监控也不复杂,定时任务、异步任务、接口里的后台处理似乎都只是“找个线程跑一下”。
线上最让人发毛的一类故障,不一定是直接报错,而是服务突然出现一种很别扭的状态: