并发数常被当成链路能力的代表,似乎调得越高就说明链路越强。使用代理IP时这个理解并不成立:并发只是同时在跑的请求数量,与成功率和稳定性并没有必然关系。把并发当成可用性的保证,往往会在提高之后看到反而更差的结果,使用代理IP时这种情况并不少见。
并发为什么不能代表能力
因为真正的限制往往在别处。使用代理IP时,出口数量、目标侧的处理速度以及链路的排队能力,都可能先于并发成为瓶颈。此时继续提高并发,使用代理IP时只会让排队更长、失败更集中。判断能力上限要看这些环节,而不是看并发这个数字。
- 出口数量决定同时能跑多少
- 目标侧速度决定上游能多快
- 排队长度决定能不能再挤
- 并发只是其中一环
并发是手段,不是能力的度量。
怎么判断并发是不是瓶颈
对照测试最直接。使用代理IP时,把同一批任务分别用两档并发跑一遍,比较成功率与平均耗时。若提高并发后耗时明显上升、成功率下降,说明瓶颈不在并发上,而在它后面的环节,使用代理IP时这个判断只需一轮测试。
先找瓶颈,再谈并发。
把并发当上限,是最常见的误判之一。使用代理IP时,任务失败的原因往往不在并发本身,而在出口是否够用、目标是否能承受。使用代理IP时先确认这两点,再决定并发取值,调整才不会白费。
并发调整也要小步走。使用代理IP时,一次提高太多很难判断是并发的问题还是别的变化引起的。每次只加一档,观察一轮再决定下一步,使用代理IP时这样既能找到合适位置,也不会因为激进调整影响在跑的任务。
并发与成功率的对应关系最好自己测一遍。使用代理IP时,把几档并发下的成功率与平均耗时整理成曲线,拐点通常比任何经验数值都直观,也更容易向别人解释。手上有了这条曲线,使用代理IP时再讨论并发就不是凭感觉,而是拿数据说话。把曲线留档,下次任务规模变化时也能直接对照,不必从头再测一遍。
