批量代理IP任务的失败重排,核心问题只有一个:失败之后,原来那条地址还要不要接着用。留着,重跑时省去一次重新验证;换掉,能避开同一条线上的其他问题。判断依据是失败的原因:地址本身的问题必须换,网络抖动导致的问题留着更快。把这一条分清,重排就会从「凭感觉重跑」变成有规则的流程。
先分清是地址的问题,还是任务本身的问题。
地址的问题有两类表现。一类是同一个IP地址反复失败,换一条立刻就好,这种必须换。另一类是整批同时失败,地址换不换都一样,问题在任务逻辑或者并发太高,跟地址无关。分不清这两类,重排就会一直在换地址和换任务之间来回试,时间全花在排查上。
重排的顺序也有讲究。失败的任务是攒着一起重跑,还是立刻单条重跑?一起重跑省时间,代价是让IP线路的压力在同一时刻集中,容易出现二次失败。立刻重跑单条,压力分散,成功率反而高,代价是管理起来麻烦,要盯着每一条的结果。批量规模不大的阶段,立刻重跑更划算;规模上了几百条,再考虑攒批处理。
重排的边界要设清楚。同一条任务重排三次还失败,就该停下来看原因,别一直循环。循环重排不光耗流量,还会让同一个问题反复出现,日志越滚越大,最后连最初的原因都找不到。
代理IP的使用记录要跟重排绑在一起。每次重排记下用了哪条地址、失败原因、重排后的结果,两周之后就能看出哪一批IP地址的失败率明显偏高。记录不用复杂,三列就够,但必须每次记,漏几次就看不出规律。
重排不是补救手段,是流程的一部分。把它写进任务的设计里,比出了故障再去补要省事得多。
