代理IP数量与并发选型
代理 IP 选型
代理 IP 数量、并发数和请求频率是三个不同的选型指标。IP 数量描述可使用的地址资源;请求并发数描述同时进行中的请求数量;请求频率描述单位时间发送多少请求。采购前应先算清任务量,再核对账号、连接、带宽及目标服务限制,不能把“更多 IP”直接理解成“更高处理能力”。
批量任务运行慢,不一定是 IP 不够。任务可能在客户端排队,也可能受到连接数量、响应速度、带宽或目标接口配额限制。本文提供一套从任务目标反推容量的方法,适用于授权接口调用、自有网站测试和允许范围内的公开页面核对。
一、三个指标分别回答什么问题?
| 指标 | 回答的问题 | 容易混淆的概念 |
|---|---|---|
| 可用 IP 数量 | 有多少地址可用于任务分配? | 资源池宣传规模不等于当前可分配的独立出口数 |
| 请求并发数 | 同一时刻有多少请求尚未结束? | 线程数、连接数和浏览器数量不一定等于请求并发数 |
| 请求频率 | 每秒或每分钟实际发送多少请求? | 单次提取地址数量不等于可发送的请求量 |
还需要区分“代理套餐允许的连接数”和“程序配置的连接池大小”。例如,libcurl 的 CURLOPT_MAXCONNECTS 控制的是连接缓存容量,不能把它直接当作正在执行的请求并发上限。[1] 面对不同工具,应按照文档确认参数含义,而不是只看名称中的数字。

二、先从任务量估算平均请求频率
下面是规划公式,不是代理产品性能承诺:
平均请求频率 = 预计请求总数 ÷ 可用执行时间。
预计请求总数应包括必要的主请求、附加请求和计划内重试;执行时间需要扣除排队、维护及计划暂停。
假设一个授权测试任务需要在 20 分钟内完成 2,400 次请求,在不考虑额外请求的简化条件下,平均频率为 2,400 ÷ 1,200 = 2 次/秒。这是任务的需求值,不代表目标系统允许该频率,也不代表某个套餐必然能达到。
如果一个业务页面还会加载图片、脚本或触发接口调用,就不能把“打开一个页面”算作“一次网络请求”。先测量实际请求构成,再制定容量计划,比直接按页面数购买 IP 更可靠。
三、并发需求与响应时间有关
在系统运行较稳定、统计边界一致时,可用“平均进行中请求数 ≈ 平均请求完成速率 × 平均请求耗时”作粗略估算。它描述平均负载关系,不是最优线程数或容量上限。
沿用上面的示例:如果完成速率是 2 次/秒,每次请求平均耗时 1.5 秒,则平均约有 3 个请求同时进行。遇到较慢响应时,进行中的请求可能增加,因此还应观察高分位耗时、排队长度及超时,而不是仅按平均值设置生产参数。
请求并发不等于 TCP 连接数量。连接复用及多路复用会改变二者关系;代理服务如果按连接数收费或限额,应单独确认其计数口径。更改请求协议或客户端后,也需要重新测试。
四、什么时候需要增加 IP,什么时候应该调整任务?
| 观察到的现象 | 优先核对 | 可采取的选型动作 |
|---|---|---|
| 任务在客户端排队,服务端响应正常 | 客户端调度、连接配置与资源使用 | 先调整程序,再判断是否升级套餐 |
| 返回明确的限流响应 | 目标接口配额、账号规则及等待要求 | 降低频率或申请授权配额,不靠加 IP 绕过 |
| 需要多个独立固定出口 | 任务隔离和目标系统登记规则 | 按独立出口需求核对 IP 数量 |
| 大响应传输缓慢 | 带宽、响应体大小与网络路径 | 评估带宽和数据量,而不只比较地址数量 |
| 瞬时峰值明显,平时负载较低 | 任务是否集中启动 | 先做队列和错峰,再测试峰值容量 |
IP 数量主要解决地址分配需求。目标服务可能按账号、令牌、资源或整体配额限制请求,不能假设增加出口就会提高允许的访问额度。对火云代理的具体方案,应分别核对地址数量、账号限制、带宽和协议支持,不以某一个参数代替完整能力。
五、用逐级测试选择容量,不直接拉满并发
- 固定测试条件:选择已获授权的目标,保持请求类型、客户端、地区和响应体规模尽量一致。
- 建立低负载基线:记录实际发送频率、完成速率、平均与高分位耗时,以及业务成功情况。
- 每次只增加一个变量:例如只提高调度频率。每个档位观察稳定后再调整,避免同时换地区、换 IP 和加线程。
- 设置停止条件:出现约定的错误率、超时、排队或限流阈值时停止加压;阈值由业务要求和目标服务许可共同确定。
- 回到可持续档位:选择有余量的配置,并在真实运行时段复测。一次短时峰值不能当作长期容量。

| 建议记录字段 | 用途 |
|---|---|
| 时间、目标、代理方案、客户端版本 | 保证不同测试可比较 |
| 请求总数、发送速率、完成速率 | 区分任务输入和实际输出 |
| 进行中请求数、连接数、排队长度 | 定位容量瓶颈 |
| 平均耗时、P95 耗时、超时数量 | 观察波动与慢请求 |
| 有效业务结果数、错误类型、重试次数 | 避免把重试或无效响应计为成果 |
有效业务成功率可按“符合业务校验的结果数 ÷ 原始任务数”统计,并单独列出重试次数。仅统计 HTTP 200 比例可能漏掉正文为空、字段不全或重复结果的问题。
六、重试也要计入容量预算
请求失败后立即反复重试,会额外消耗连接、带宽和目标系统处理能力。AWS 的工程实践说明,过载时重试可能放大问题,可结合超时、退避与随机抖动控制重试;有副作用的操作还需要确认幂等性。[2]
选型测试应分别记录首次请求和重试请求。如果总发送量变大,但有效结果没有增加,就应先查失败原因。对于明确拒绝授权的响应,不应继续用加并发或更换 IP 代替权限处理。
常见问题
买 100 个 IP,就能同时运行 100 个任务吗?
不能直接推断。还要看每个任务的请求数、连接规则、账号限额、客户端能力及目标服务许可。
套餐写“高并发”,应该追问什么?
追问限制按账号、出口还是连接计算,是否允许突发,测试条件是什么,以及超限后的行为。没有计数口径的数字不适合直接横向比较。
线程数越多,任务完成越快吗?
不一定。线程增加后可能出现更多排队、超时和重试。以有效结果完成速率及稳定性判断,而不是只看运行中的线程数。
如何确定最终购买数量?
先按业务拆分独立出口需求,再用授权范围内的容量测试确定账号、并发和带宽配置。把地址需求与处理能力分别填写,最后选择同时满足两者的方案。
参考资料
- libcurl 官方文档:CURLOPT_MAXCONNECTS(连接缓存参数的准确含义)。
- AWS Builders' Library:Timeouts, retries, and backoff with jitter(超时、重试、退避与抖动)。