性能优化 · 约 35 分钟
日志汇总:提速
每天夜里 src/report.py 会把最繁忙的 API 路由汇总成表发到值班频道:每条路由的请求数、5xx 错误占比和 95 分位延迟,数据来自当天的访问日志(src/parser.py 每行解析一个请求)。产品上线按租户区分的路由之后,这个任务处理一天的日志要一个多小时,有时赶不上早会。
把 src/rollup.py 里的 rollup() 优化到能处理一整天的日志,耗时接近随行数线性增长,同时返回结果不变:
- 路由、请求数、错误占比(保留 4 位小数)和最近秩法的 p95 与现在一致;
- 顺序一致:请求最多的在前,并列时按路由名排序;
- 格式错误的行照样跳过;
top大于路由数时照样返回全部路由。
改之前和改之后都量一下耗时,不要改公开函数的签名。隐藏测试会在生成的日志上把你的输出和现在的行为对比,并对几份大日志计时;你只能看到通过了几个。