“这条线路可用性有多少”是一句常见的话,但同一个数字在不同口径下含义差别很大。代理IP线路的可用性本质是一段观察窗口里的通过比例,指标本身不复杂,复杂的是分子分母怎么定。本文按四个口径要素讲清代理IP线路的可用性怎么算,以及为什么不同来源给出的数字不能直接比。
要素一:分母用时间还是用请求
两种分母对应两类指标。按时间算是”可用时长除以观察总时长”,它回答”这段时间里线路有多少时候能用”;按请求算是”成功请求除以总请求”,它回答”用线路发出的业务有多少成了”。两者的数值可以相差很多:线路只在夜间中断两小时,按时间的可用性很高;如果这两小时恰好是任务密集时段,按请求的可用性会明显下降。做规划时要先明确手上的数字是哪一类——多数供应商公开的数字是按时间统计的,而批量环境里业务感受更接近按请求统计的口径。
要素二:观察窗口的长度与起点
窗口越长,指标越平滑但越迟钝;窗口越短,越灵敏但越容易抖动。常见的错误是拿一个短窗口的低谷值与另一个长窗口的均值比较,得出”最近变差了”的结论。两个不同窗口的数字放在一起比,几乎必然得出错误判断。
起点同样关键。含维护时段的窗口与不含维护时段的窗口,是两个不同的指标。多数对外公布的数字会剔除维护时段,这是合理的,但使用时要清楚剔除的范围——自己算的指标如果按含维护时段统计,与对方的数字不可直接比。
还有一个容易被忽略的细节:观察窗口与统计频率是否对齐。探测每五分钟一次,指标按小时汇总,那么一个小时里最多只有十二个样本;样本少的时候个别失败会明显影响数值。窗口越长、频率越低,样本量的影响越小,这也是月度数字比小时数字稳定得多的原因。
要素三:什么算失败
这是差异最大的一环。严格口径只把完全不通计入失败;宽松口径会把超时、部分请求失败、出口归属不符一并计入。同一批原始数据,两种口径能算出相差一到两个百分点的结果,而这些百分点在低延迟时段里对应的是大量业务请求。
批量环境的实用做法是分层算:最上层是完全不通,中间层是性能不达标,最下层是行为不符。三层各自统计,再给一个综合判断。只看一个数字会掩盖问题,只看三层又难以对外沟通,两层配合使用比较合适。分层还带来一个好处:三层各有各的改进办法,分层算之后改进方向自然清楚。
要素四:谁来测、在哪测
同一时间同一线路,从批量机器上测与从专用探测机上测,结果常常不同。差别来自两点:一是探测机资源充足、并发极低,业务机器则共享资源、并发高;二是探测请求走的是最简路径,业务请求还要经过应用层的连接池与重试逻辑。探测数字反映线路本身,业务数字反映线路加环境,两个都有用,但不能混用。
选探测机时的经验是:与业务机器同网段或同环境的探测机更能代表真实可用性,跨环境的探测机适合看线路自身状态。两类各留一组,指标体系才有解释力。
另外还要注意探测请求本身的代表性:探测内容过于简单(只测网络可达),会把性能不达标与行为不符都算成成功,指标虚高。合理的设计是探测内容包含一次接近真实业务的请求,虽然实现成本略高,指标的解释力会好很多。
把四个要素凑齐,一个可用性数字才算有完整含义:分母类型、窗口长度与起点、失败定义、测量位置。批量环境里对外沟通时建议把这四点一起写清楚,只给数字的沟通几乎都会引起误解。代理IP线路的指标讨论到这里才算落到可核对的层面,而不是各说各话。
最后一点:指标要服务于决策,不是服务于汇报。如果可用性数字涨了但业务超时没减少,说明口径太宽松或者分层里性能层与行为层被漏掉了。判断指标合不合理的方法很简单——它能不能指出下一步该做什么。
问:月度99%与99.5%的差别值得计较吗?
取决于业务在剩余那部分时段里的实际损失。按月算,0.5%约等于二十多分钟。多数批量任务里,这二十分钟落在什么时段比它本身长短更重要,因此不要只盯百分比,要一起看失败的分布。
问:自己的数据与供应商公布的数据不一致怎么办?
先对四个要素,而不是争论数字。实践中这类不一致几乎都出在口径上,通常是窗口起点或失败定义不同;对完口径再谈数值才有意义。
