跳至正文
中文
立即开始

QPS(每秒查询数)

QPS(Queries per Second,每秒查询数)是系统每秒接收或完成的查询或请求数量,用于衡量流量或吞吐量。

文章目录(8 个章节)

如何测量 QPS

查询可以是数据库查询、API 调用、搜索请求或 HTTP 请求。比较 QPS 数据前,应先确认统计的是收到的请求、成功完成的请求,还是产生任何结果的请求。

用查询总数除以测量时长(秒),即可算出平均 QPS。如果某个 API 在 10 秒内完成 600 个请求,平均吞吐量就是 60 QPS。平均值可能掩盖短时峰值,所以监控通常会同时报告平均值,以及按 1 秒窗口测得的峰值。

QPS 高并不代表性能一定好。失败的请求也会推高该数值,而响应缓慢仍会影响用户体验。

QPS 与并发和延迟的区别

QPS 衡量速率。并发统计正在处理的请求数量,延迟衡量每个请求需要多长时间。

指标 衡量内容 示例
QPS 每秒请求数 每秒 20 个请求
并发 正在处理的请求数 10 个未完成的请求
延迟 每个请求的耗时 500 毫秒

负载稳定时,平均并发约等于 QPS 乘以平均响应时间。QPS 为 20、延迟为 0.5 秒时,预计约有 10 个请求正在处理。该估算要求平均值稳定,且测量区间边界一致。出现短时突发流量时,瞬时 QPS 和并发可能并不一致。

QPS 对代理的重要性

使用代理时,可以测量客户端与代理之间的 QPS,也可以测量代理与目标之间的 QPS。重试和代理错误可能导致两者的数据不同。一个网页也可能触发多个 HTML、脚本和图片请求,因此每秒页面数并不等于 QPS。

网站、API、CDN 和防火墙通常会按 IP 地址、账号或 API 密钥限速。使用更多代理 IP 发送请求会改变流量来源,但并不代表可以超出网站规定的限制。流量过大时,可能会收到 429 Too Many Requests 响应。

如何控制 QPS

  1. 查看公开的限制。 遵守 API 文档、robots.txt 和网站条款。
  2. 限制总速率。 对所有工作进程和代理统一限速,而不是只分别限制每个代理。
  3. 限制并发。 使用队列,避免响应变慢时出现数量失控的未完成请求。
  4. 处理 429 响应。 如果响应中包含 Retry-After,应按其要求等待,并在重试前使用指数退避。
  5. 测量有效吞吐量。 在跟踪延迟和错误率的同时,记录成功请求的 QPS。

常见问题

多高的 QPS 才算好?

这取决于具体系统及其公开限制。合理的 QPS 应当可以持续维持,在满足工作负载需求的同时,不会增加延迟或错误。

QPS 和每秒请求数相同吗?

通常相同。“QPS”常用于数据库、搜索系统和 API,“每秒请求数”则常用于网络流量。无论使用哪个名称,都应确认该指标具体统计什么。

使用更多代理会提高 QPS 吗?

不会自动提高。更多代理可以把请求分散到不同 IP 地址,但客户端、代理网关和目标服务仍有容量与限速限制。

相关术语

查看全部术语