识别接口平均耗时 2.8 秒,监控上只有一个总数,分不清是上传占了两秒还是推理占了 0.8 秒。碰到这种情况,我一般先确认改动有没有真的生效。

原因不复杂,只在调用前后各打一个时间戳,中间的上传、排队、推理三段没有埋点。优化方向全靠猜,改完也不知道收益在哪。

「识别耗时拆分统计」相关的验证我通常做两遍,改完一次、隔天再看一次,确认不是临时生效。改完顺手把文档补一句,省得下次自己重新推一遍。

import time
t0 = time.time()
upload(img)
t1 = time.time()
print('upload %.2f infer %.2f' % (t1 - t0, time.time() - t1))

监控和日志的时间要对上,时区不一致会多绕很大一圈。临时改动用注释写上日期和原因,过两周自己都记不清为什么这么写。

动手前把原文件复制一份带时间戳,出问题立刻换回去,比现场分析快得多。

具体做法是,上传 推理 回调三段分别计时;用 P50 P95 P99 而不是平均值;按图片大小分桶统计;超过 5 秒的请求记录尺寸和格式。

最后用这个标准收尾,监控里能看到三段耗时占比 优化后 P95 降到 1.5 秒。

作者 9823189