跳至正文
中文
立即开始

并发

并发是指同时进行的操作数或保持打开的连接数。并发限制决定代理客户端能同时处理多少任务。

文章目录(8 个章节)

并发的工作原理

并发统计已经开始但尚未完成的任务。如果客户端发起了 10 个请求,并且都在等待响应,请求并发数就是 10。每当收到响应或请求彻底失败,便会释放一个并发槽位,供下一项任务使用。

程序可以利用异步 I/O、线程或进程来并发处理任务。并发不要求任务分别运行在不同的 CPU 核心上。

使用代理传输流量时,应区分进行中的请求和保持打开的 TCP 连接。空闲的 keep-alive 连接会计入连接并发数,但不计入请求并发数。HTTP/2 也可以通过一个连接承载多个请求。请确认客户端或代理服务器限制的是任务数、请求数还是连接数。

并发与 QPS

并发衡量同时进行的任务数量,QPS 衡量一段时间内的请求速率。

指标 衡量内容 常用单位
并发 进行中的任务 请求数或连接数
QPS 请求速率 请求数/秒
带宽 传输的数据量 Mbps 或 GB

客户端在稳态下满负载运行时,已完成请求的吞吐量约等于进行中请求的并发数除以平均端到端请求耗时。10 个并发请求的平均耗时为 0.5 秒时,每秒大约可完成 20 个请求。

重试可能提高总请求 QPS,却降低成功请求的吞吐量,因为一部分处理能力用于重复执行失败的任务。只有当测得的端到端耗时未计入排队时间或客户端开销时,这一估算才会偏高。响应数据较大时,带宽也可能成为瓶颈。

为什么并发有限制

请求等待网络响应时,提高并发可以增加吞吐量。超过某个临界点后,则会增加延迟、占满连接池并导致更多超时。

向同一源站发起高并发请求,还可能触发限速。网站、CDN 或防火墙可能返回 429 Too Many Requests。IP 轮换并不意味着同时发出的 20 个请求会使用 20 个不同的出口 IP。实际分配取决于代理的轮换和会话规则。

设置合理的并发限制

  1. 从低并发开始。 每个域名先使用少量并发请求。
  2. 逐步提高。 小幅增加并发限制,同时监测延迟、超时和状态码。
  3. 遵守网站限制。 遵守 robots.txt、相关条款和已公布的 API 配额。不要靠提高并发突破访问控制限制。
  4. 出错时退避。 收到 429 或 503 响应后降低并发,并在重试前采用指数退避。

常见问题

代理并发越高,IP 地址就越多吗?

不是。并发描述的是同时进行的任务数量,而不是出口 IP 的数量。静态会话或粘性会话可以通过同一个地址发送多个并发请求。

并发和线程是一回事吗?

不是。线程只是实现并发的一种方式。异步事件循环可以用少量线程管理许多进行中的请求。

为什么提高并发会导致 429 错误?

提高并发会让请求集中在更短的时间内发出。如果请求速率超过网站针对单个 IP、账号或端点设置的限制,网站或其前端基础设施可能返回 429。

相关术语

查看全部术语