错误率是百分之几
按模型,四条里两条 5xx,error_pct(reqs) 交回几?
贯穿本节的运维模型(判题机纯 Python、无网,这是它的确定模型,见 spine.py):服务上线后靠日志/指标/健康/告警盯住它。
指标:请求列表每项 {"status":int,"ms":int};total 请求数、errors=5xx 数、error_pct=错误率百分比(整数)、percentile(已排序延迟, p)、slowest=最慢。
def total(reqs):
"""一共处理了几个请求(reqs 每项 {"status":int,"ms":int})。"""
return len(reqs)
def errors(reqs):
"""有几个请求是 5xx 错误(status >= 500)。"""
return sum(1 for r in reqs if r["status"] >= 500)
def error_pct(reqs):
"""错误率(百分比整数):5xx 数 * 100 // 总数。"""
return errors(reqs) * 100 // total(reqs)
def percentile(ms_sorted, p):
"""已排序延迟列表的第 p 百分位(p 取 0..100)。"""
return ms_sorted[(len(ms_sorted) - 1) * p // 100]
def slowest(reqs):
"""最慢的一个请求耗时多少毫秒。"""
return max(r["ms"] for r in reqs)
print(error_pct([{"status": 200, "ms": 10}, {"status": 500, "ms": 90}, {"status": 200, "ms": 30}, {"status": 503, "ms": 50}]))
全部评论