RPS(Requests Per Second)介绍(RPS只代表系统吞吐量Throughput,不代表延迟)并发数Concurrency并发量、QPS查询操作、CPU瓶颈、IO瓶颈、数据库瓶颈
文章目录深入理解 RPSRequests Per Second一、什么是 RPS二、RPS 的核心意义三、RPS 的简单理解四、RPS 如何计算五、RPS 与并发的关系1. 并发数2. RPS3. 二者关系例子六、RPS 与 QPS 的区别1. RPS2. QPS3. 实际中经常混用七、RPS 不等于性能一定好举例八、常见性能指标关系1. Latency延迟2. Throughput吞吐量3. Error Rate错误率4. P99九、为什么系统会出现 RPS 瓶颈1. CPU 瓶颈2. IO 瓶颈3. 数据库瓶颈4. 锁竞争5. 下游服务限制十、如何提升 RPS1. 提升并发能力2. 减少请求耗时3. 增加实例数量4. 使用缓存5. 使用连接池十一、如何测试 RPSwrk 示例十二、Prometheus 中的 RPS十三、网关中的 RPS十四、真实互联网中的 RPS十五、总结深入理解 RPSRequests Per Second在高并发系统、API 网关、微服务、Web 服务、负载均衡等领域中RPSRequests Per Second是最常见、最核心的性能指标之一。无论是NginxKubernetes IngressKong / APISIXPrometheus压测工具wrk、hey、JMeter云服务监控平台你都会频繁看到当前 RPS12,000峰值 RPS80k系统最大承载 RPS150k那么RPS 到底是什么如何计算和 QPSQueries Per Second 每秒查询率 有什么区别为什么高 RPS 不一定代表系统快如何提升系统 RPS这篇文章带你系统理解。一、什么是 RPSRPS 全称Requests Per Second即每秒请求数表示一个系统每秒能够处理多少个请求。例如系统 1 秒处理了 5000 个 HTTP 请求则RPS 5000二、RPS 的核心意义RPS 本质上衡量的是系统吞吐量Throughput也就是单位时间内处理工作的能力它通常用于衡量Web 服务性能API 服务能力网关吞吐量微服务容量数据库访问能力CDN 承载能力三、RPS 的简单理解可以把服务器想象成一家餐厅。用户请求 顾客点单服务端处理 厨房做菜响应返回 上菜如果1 秒钟完成 100 个订单那么RPS 100RPS 越高系统单位时间处理能力越强能承载更多用户四、RPS 如何计算公式非常简单RPS 总请求数 ÷ 总时间秒例如10 秒处理了 50,000 个请求则R P S 50000 10 5000 RPS \frac{50000}{10} 5000RPS10500005000即RPS 5000五、RPS 与并发的关系很多人容易混淆RPS并发数Concurrency它们并不是同一个概念。1. 并发数表示同时有多少请求正在处理中例如同时有 1000 个请求未完成则并发数 10002. RPS表示每秒完成多少请求例如每秒完成 5000 个请求则RPS 50003. 二者关系经典公式C o n c u r r e n c y R P S × L a t e n c y Concurrency RPS \times LatencyConcurrencyRPS×Latency其中Concurrency 并发数RPS 每秒请求数Latency 平均延迟秒例子假设RPS 2000平均响应时间 100ms即0.1 秒则C o n c u r r e n c y 2000 × 0.1 200 Concurrency 2000 \times 0.1 200Concurrency2000×0.1200说明系统同时大约有 200 个请求正在处理中六、RPS 与 QPS 的区别这是最常见的问题。1. RPSRequests Per Second每秒请求数强调HTTP/API 请求2. QPSQueries Per Second每秒查询数通常用于数据库RedisElasticsearch搜索引擎强调查询操作3. 实际中经常混用很多互联网公司QPSTPSRPS会混着说。例如网关 QPS 10w实际上可能就是RPS 10w七、RPS 不等于性能一定好这是一个非常关键的点。很多系统RPS 很高但用户体验很差为什么因为RPS 只代表吞吐量不代表延迟。举例系统 ARPS10000延迟5ms系统 BRPS10000延迟2s虽然RPS 一样但用户体验天差地别因此性能评估不能只看 RPS。还要结合Latency延迟P99错误率CPU内存IO一起看。八、常见性能指标关系1. Latency延迟表示单个请求耗时例如50ms2. Throughput吞吐量表示单位时间处理量RPS 就属于吞吐量指标。3. Error Rate错误率表示请求失败比例例如5xx 比例4. P99表示99% 请求耗时低于某值例如P99 300ms说明99% 请求都在 300ms 内完成九、为什么系统会出现 RPS 瓶颈系统无法继续提高 RPS通常意味着某个资源达到瓶颈。常见包括1. CPU 瓶颈例如JSON 序列化加密解密gzip正则匹配CPU 打满后RPS 无法提升2. IO 瓶颈例如磁盘 IO网络 IO数据库 IO3. 数据库瓶颈最常见。例如SELECT*FROMordersWHEREuser_id?没有索引。导致查询慢连接池耗尽RPS 下降4. 锁竞争例如synchronizedmutexRedis 分布式锁大量线程等待锁。5. 下游服务限制例如你的服务能 5w RPS但下游服务只能 2k RPS整个链路就被限制。十、如何提升 RPS1. 提升并发能力例如协程异步 IOEvent LoopReactor 模型典型NginxNettyNode.js2. 减少请求耗时因为R P S ≈ C o n c u r r e n c y L a t e n c y RPS \approx \frac{Concurrency}{Latency}RPS≈LatencyConcurrencyLatency 越低RPS 越高优化包括SQL 优化缓存减少远程调用批量处理3. 增加实例数量横向扩展1 台机器1w RPS 10 台机器10w RPS典型Kubernetes HPAAuto Scaling4. 使用缓存例如RedisCDN本地缓存减少数据库压力。5. 使用连接池例如数据库连接池HTTP KeepAlivegRPC 长连接减少连接建立成本。十一、如何测试 RPS常见压测工具工具特点wrk高性能 HTTP 压测heyGo 编写简单易用JMeter功能强大k6云原生压测LocustPython 压测框架wrk 示例wrk-t8-c1000-d30shttp://localhost:8080含义8 个线程1000 并发连接压测 30 秒输出Requests/sec: 35214.89这就是RPS 35214十二、Prometheus 中的 RPSPrometheus 常见写法rate(http_requests_total[1m])含义最近 1 分钟内每秒请求增长速率本质上RPS十三、网关中的 RPSAPI Gateway 非常关注 RPS。例如KongAPISIXEnvoyNginx因为网关是流量入口高 RPS 能力意味着更高吞吐更强扩展性更低成本十四、真实互联网中的 RPS一些大规模系统的量级系统RPS小型博客几十企业后台几百 ~ 几千电商活动几万大型 API 网关十万级CDN 边缘节点百万级十五、总结RPS 是系统性能领域最核心的指标之一。它表示系统每秒能够处理多少请求。核心公式R P S R e q u e s t s T i m e RPS \frac{Requests}{Time}RPSTimeRequests以及C o n c u r r e n c y R P S × L a t e n c y Concurrency RPS \times LatencyConcurrencyRPS×Latency需要记住高 RPS ≠ 低延迟高吞吐 ≠ 好体验RPS 必须结合LatencyP99Error RateCPUIO一起分析在现代云原生与微服务架构中RPS 已经成为衡量系统容量与架构能力的基础语言。