用代理IP访问某个站点却连不上,等半天才弹出一句失败,这种体验多半和超时参数有关。握手要等对方回应,等到什么时候放弃、失败后隔多久再试,都由几个可调的数值决定。这些数值不合适时,症状会朝相反的方向跑:定得太短,网络稍抖一下就失败;定得太长,真要断的时候又迟迟不放手。
在代理IP链路上,这几个参数通常分两类:一类管等待,一类管重试。等待类决定单次尝试愿意等多久,重试类决定失败之后还试几次、每次间隔多久。两类配合不好,要么反应迟钝,要么轻易放弃。

| 参数 | 作用 | 调得过小 | 调得过大 |
|---|---|---|---|
| 连接超时 | 单次建立连接愿等多久 | 轻微抖动就判失败 | 真断了也要等很久 |
| 读取超时 | 收到回应后等数据的时限 | 慢站被误判为不可用 | 卡死时迟迟不返回 |
| 重试次数 | 失败后再试几轮 | 一次抖动就整体失败 | 故障时反复空转 |
| 重试间隔 | 两轮之间隔多久 | 密集重试加重拥塞 | 恢复后仍长时间空等 |
调之前先分清哪种慢
看到慢,先分清是等待慢还是重试慢。等待慢表现为单次尝试就耗掉很长时间,日志里一次请求的耗时接近设置的等待上限;重试慢表现为单次很快返回,但连着失败好几轮,总耗时被轮数乘了上去。两者的调法相反:前者要收小等待,后者要减少轮数或者拉长间隔。
调代理线路的超时参数之前,先把慢的类型分清楚,两类慢的调法方向正好相反。凭印象把数值统一调大,常常只是把问题从一种形态换成另一种形态。
参数之间怎么配合
等待、次数、间隔是一组,不能单独看。
从日志里读实际值
多数工具会把每次尝试的耗时和结果记下来,翻一遍日志就能看出实际使用的数值,以及失败集中在哪一段。有实际值打底,调整才有依据,不必照着默认值猜。
- 先确认单次尝试的实际耗时
- 再看失败是否集中在前几轮
- 区分是等待到顶还是轮数用尽
- 按类型收小等待或减少轮数
- 改完复测,对比调整前后的分布
一般建议把等待设在略高于正常往返的水平,重试次数控制在两三轮的范围内,间隔随轮次温和拉长。这样做的好处是偶发抖动能被兜住,真故障也不会被无限放大。跨地区的代理IP往返差异较大时,可以按IP分别设定,别用一套数值卡所有链路。
