概叙
Java web应用性能分析之性能指标【TPS和QPS】_java tps qps-优快云博客
科普文:软件架构设计之【系统吞吐量(TPS)、用户并发量、性能测试、IO负载概叙】_系统吞吐量-优快云博客
Java web应用性能分析之【sysbench基准测试】-优快云博客
Java web应用性能分析之【Linux服务器性能监控分析概叙】_java 当前服务器性能监测-优快云博客
指标 | 定义 | 单位 |
---|---|---|
QPS | 每秒查询数(Queries Per Second),衡量接口吞吐量 | 次/秒 |
TPS | 每秒事务数(Transactions Per Second),完整业务处理能力 | 事务/秒 |
延迟 | 请求从发送到收到响应的时间 | 毫秒(ms) |
带宽 | 网络传输能力 | Mbps/Gbps |
TCP连接数 | 服务器同时维持的TCP连接数量 | 个 |
服务器性能 | CPU/内存/磁盘I/O等综合处理能力 | 相对值 |
1. QPS(每秒查询数)
QPS表示服务器每秒能够处理的查询请求数量。
它是衡量信息检索系统(如搜索引擎或数据库)在一秒钟内接收到的搜索流量的常见度量。
高QPS意味着系统能够快速响应大量的查询请求。
2. TPS(每秒事务数)
TPS表示服务器每秒能够处理的事务数量。
一个事务是指客户端向服务器发送请求并收到响应的完整过程。
TPS是衡量系统处理业务逻辑能力的重要指标,特别是在金融系统、电子商务平台等需要处理大量事务的场景中。
3. 延迟
延迟表示从发送请求到收到响应所经历的时间,通常以毫秒(ms)为单位。
它是衡量系统响应速度的关键指标。
低延迟意味着系统能够快速响应用户请求,提供更好的用户体验。
4. 带宽
带宽是指网络在单位时间内能够传输的数据量。
它是衡量网络传输能力的重要指标。
高带宽意味着网络能够更快地传输数据,减少数据传输的延迟。
5. 服务器TCP连接数
服务器TCP连接数表示服务器能够同时建立的TCP连接数量。
它是衡量服务器并发处理能力的关键指标。
高并发连接数意味着服务器能够同时处理更多的用户请求。
6. 服务器性能
服务器性能是指服务器处理任务的能力,包括CPU使用率、内存使用率、磁盘I/O等。
它是衡量服务器整体性能的重要指标。高性能服务器能够更快地处理任务,提供更好的系统响应速度。
7. 服务器硬件资源
服务器硬件资源包括CPU、内存、磁盘、网卡等。
它们是服务器性能的基础,直接影响服务器的处理能力。
高性能的硬件资源能够提升服务器的整体性能,从而支持更高的QPS、TPS和并发连接数。
8. 设计决策
硬件资源分配矩阵
QPS级别 | CPU需求 | 内存需求 | 磁盘IOPS | 网络带宽 |
---|---|---|---|---|
10万 | 200 vCPU | 400GB | 50,000 | 10Gbps |
100万 | 2,000 vCPU | 4TB | 500,000 | 2×25Gbps |
200万 | 5,000 vCPU | 10TB | 1,200,000 | 4×25Gbps |
500万 | 12,000 vCPU | 24TB | 3,000,000 | 10×25Gbps |
硬件资源需求矩阵
QPS | TPS | 服务器配置示例 | 关键参数 |
---|---|---|---|
10万 | 5,000 | 16C32G ×20 | 内网带宽≥5Gbps |
100万 | 50,000 | 32C64G ×50 + 数据库集群 | NVMe SSD, 25Gbps网卡 |
200万 | 100,000 | 64C128G ×100 + 分布式DB | RDMA网络, 持久内存 |
性能瓶颈识别与解决
1. 高QPS低延迟场景瓶颈
2. 典型优化措施
瓶颈点 | 优化手段 | 实施示例 |
---|---|---|
CPU | 指令集优化 | 使用AVX512加速加密计算 |
网络 | 内核旁路技术 | DPDK/OVS加速Nginx |
磁盘 | 多级缓存策略 | MySQL启用Buffer Pool+SSD Cache |
内存 | NUMA绑定 | numactl --cpunodebind=0 --localalloc |
连接数 | 长连接复用 | gRPC连接池+Keep-Alive 300s |
性能瓶颈识别与优化
1. 各组件性能天花板
组件 | 单机上限(调优后) | 瓶颈特征 |
---|---|---|
Nginx | 80K QPS | CPU软中断100% |
MySQL | 15K TPS | 磁盘IO等待>50% |
Redis | 120K QPS | 单线程CPU跑满 |
业务服务 | 5K QPS/core | GC时间占比>30% |
2. 优化措施对比
指标 | 低延迟优化手段 | 高QPS优化手段 |
---|---|---|
网络 | TCP Fast Open | DPDK/SRIOV |
CPU | 绑核隔离 | AVX指令集优化 |
存储 | Optane持久内存 | 分库分表 |
连接 | 长连接复用 | SO_REUSEPORT |
阿里云ECS选型对照表
指标 | ecs.g7ne.4xlarge | ecs.g7ne.16xlarge | ecs.ebmg7.32xlarge |
---|---|---|---|
适用QPS | 5万-8万 | 20万-30万 | 50万+ |
网络吞吐 | 5Gbps | 16Gbps | 32Gbps |
PPS能力 | 300万 | 800万 | 1500万 |
TCP连接数 | 50万(调优后) | 200万(调优后) | 500万+(SR-IOV) |
延迟表现 | 1.2ms(内网) | 0.8ms(内网) | 0.5ms(RDMA) |
设计决策流程图
通过上述关系模型,可根据业务需求反向推导出精确的硬件配置。
1. 资源估算
例如要实现100万QPS@3秒延迟:
- 先计算需要 ≥2,000 vCPU
- 带宽需求 ≥12Gbps
- TCP连接池 ≥500万
- 选择16台ecs.g7ne.16xlarge(128核×16=2048 vCPU)
- 配置4×10Gbps共享带宽包
2. 成本估算
资源类型 | 数量 | 单价(年) | 小计 |
---|---|---|---|
ecs.g7ne.8xlarge | 140 | ¥35,000 | ¥490万 |
10Gbps带宽包 | 4 | ¥150,000 | ¥60万 |
总计 | ¥550万 |
3. 最终决策流程
通过上述模型,可推导出:
- 要实现100万QPS@3秒延迟:
- 需要 32C64G×50 计算节点
- 12×16C64G Redis集群
- 4×10Gbps 内网带宽
- 关键约束:
- 单机TCP连接数≤500万(需调优)
- 数据库TPS≤50,000(需分库分表)
它们之间的关系
QPS(每秒查询数)、TPS(每秒事务数)、延迟、带宽、服务器TCP连接数、服务器性能、服务器硬件资源都是衡量系统性能的重要指标,它们之间有着密切的关系。
- QPS与TPS的关系:QPS更偏向于技术层面的吞吐量(处理了多少个请求),而TPS更偏向于业务层面的吞吐量(完成了多少个有效业务操作)。在大多数情况下,TPS的值会小于或等于QPS,因为一个事务可能包含多个查询。
- QPS/TPS与延迟的关系:QPS(或TPS)与延迟之间存在反比关系。当延迟增加时,系统能够在单位时间内处理的请求数量(即QPS或TPS)会减少。反之,当延迟减少时,QPS或TPS会增加。
- 带宽与QPS/TPS的关系:带宽是影响网络传输速度的关键因素。当带宽不足时,即使服务器的处理能力很强,也会因为网络传输的瓶颈而导致QPS/TPS下降。因此,足够的带宽是支持高QPS/TPS的基础。
- 服务器TCP连接数与并发数的关系:服务器TCP连接数限制了系统能够同时处理的并发请求数量。当并发请求数量超过服务器的TCP连接数限制时,会导致请求被阻塞或拒绝。因此,足够的TCP连接数是支持高并发数的关键。
- 服务器性能与硬件资源的关系:服务器性能直接依赖于其硬件资源。高性能的硬件资源(如多核CPU、大容量内存、高速磁盘等)能够提升服务器的处理能力,从而支持更高的QPS、TPS和并发连接数。
- 整体系统性能的关系:系统的整体性能是这些指标综合作用的结果。例如,一个高性能的服务器可能具有高的QPS和TPS,但如果网络带宽不足或数据库响应延迟高,那么系统的整体性能仍然会受到影响。
例如:假设有一个电子商务平台,需要在高并发情况下处理大量的用户订单。为了支持高并发和高TPS,平台需要采用高性能的服务器和足够的网络带宽。同时,为了优化数据库性能,可以采用读写分离、分库分表等技术手段来减少数据库响应延迟。通过这些措施,平台可以支持更高的QPS和TPS,提供更好的用户体验。
如图所示,它们之间相互影响,共同衡量系统性能,是衡量系统性能的重要指标。
1. QPS(每秒查询率)与各因素的关系
- 与TPS:QPS关注的是查询请求,TPS(每秒事务数)关注的是事务处理。一个事务可能包含多个查询,因此TPS通常小于或等于QPS。
- 与延迟:QPS和延迟相互影响。高延迟会导致服务器处理每个请求的时间变长,从而降低QPS;反之,低延迟有助于提高QPS。
- 与带宽:QPS越高,单位时间内需要传输的数据量越大,对带宽的需求也越高。
- 与服务器TCP连接数:每个请求通常占用一个TCP连接,QPS越高,需要的TCP连接数越多。
- 与服务器性能:服务器性能越强,单位时间内能处理的请求数QPS越高。
- 与服务器硬件资源:充足的硬件资源(如CPU、内存、磁盘I/O)是支撑高QPS的基础。
2. TPS(每秒事务数)与各因素的关系
- 与QPS:TPS通常小于或等于QPS,因为一个事务可能包含多个查询。
- 与延迟:高延迟会增加事务处理时间,降低TPS;低延迟有助于提高TPS。
- 与带宽:TPS越高,事务处理所需的数据传输量越大,对带宽的需求越高。
- 与服务器TCP连接数:每个事务可能占用多个TCP连接,TPS越高,需要的TCP连接数越多。
- 与服务器性能:服务器性能越强,单位时间内能处理的事务数TPS越高。
- 与服务器硬件资源:充足的硬件资源是支撑高TPS的基础。
3. 延迟与各因素的关系
- 与QPS:高延迟会降低QPS,低延迟有助于提高QPS。
- 与TPS:高延迟会降低TPS,低延迟有助于提高TPS。
- 与带宽:带宽不足会导致数据传输延迟增加,影响整体延迟。
- 与服务器TCP连接数:过多的TCP连接会增加连接管理开销,增加延迟。
- 与服务器性能:服务器性能差会导致请求处理时间长,增加延迟。
- 与服务器硬件资源:硬件资源不足会导致处理速度慢,增加延迟。
延迟的影响因素
因素 | 典型影响范围 | 优化手段 |
---|---|---|
网络延迟 | 10-300ms | CDN/边缘计算 |
数据库查询 | 20-500ms | 索引优化/缓存 |
业务逻辑 | 5-200ms | 代码优化/异步处理 |
服务器负载 | 1-100ms | 水平扩展/负载均衡 |
4. 带宽与各因素的关系
- 与QPS:QPS越高,需要的带宽越大。
- 与TPS:TPS越高,需要的带宽越大。
- 与延迟:带宽不足会增加延迟,足够的带宽可以降低延迟。
- 与服务器TCP连接数:每个TCP连接占用一定带宽,连接数过多会导致带宽竞争,增加延迟。
- 与服务器性能:服务器性能好可以更高效地利用带宽,但带宽不足会限制性能。
- 与服务器硬件资源:网络接口等硬件资源直接影响带宽。
5. 服务器TCP连接数与各因素的关系
- 与QPS:TCP连接数越多,支持的QPS越高,但受限于服务器性能和硬件资源。
- 与TPS:TCP连接数越多,支持的TPS越高,但受限于服务器性能和硬件资源。
- 与延迟:过多的TCP连接会增加连接管理开销,增加延迟。
- 与带宽:每个TCP连接占用一定带宽,连接数过多会导致带宽竞争,增加延迟。
- 与服务器性能:服务器性能决定了能同时处理的TCP连接数。
- 与服务器硬件资源:硬件资源(如内存)用于维护TCP连接状态,资源不足会影响连接数。
6. 服务器性能与各因素的关系
- 与QPS:服务器性能越强,支持的QPS越高。
- 与TPS:服务器性能越强,支持的TPS越高。
- 与延迟:服务器性能越强,处理请求的时间越短,延迟越低。
- 与带宽:服务器性能好可以更高效地利用带宽。
- 与服务器TCP连接数:服务器性能强可以同时处理更多的TCP连接。
- 与服务器硬件资源:服务器性能依赖于硬件资源。
7. 服务器硬件资源与各因素的关系
- 与QPS:充足的硬件资源是支撑高QPS的基础。
- 与TPS:充足的硬件资源是支撑高TPS的基础。
- 与延迟:高性能的硬件资源可以减少请求处理时间,降低延迟。
- 与带宽:网络接口等硬件资源直接影响带宽。
- 与服务器TCP连接数:足够的内存用于维护TCP连接状态,支持更多的连接数。
- 与服务器性能:硬件资源是服务器性能的基础。
量化关系公式
1. QPS与硬件资源的关系
所需vCPU数量 = ceil(QPS × 平均处理时间(秒) / 目标CPU利用率)
示例:10万QPS,50ms处理时间,70%利用率
→ 100,000 × 0.05 / 0.7 ≈ 7,143 vCPU秒
→ 20台16核服务器
2. 带宽计算公式
带宽(Mbps) = QPS × (请求大小 + 响应大小) × 8 / 1,000,000
示例:10万QPS,2KB请求+8KB响应
→ 100,000 × 10KB × 8 / 1,000,000 = 8Gbps
3. TCP连接数估算
最大并发连接数 = QPS × 平均连接保持时间(秒)
示例:10万QPS,Keep-Alive 15秒
→ 100,000 × 15 = 1.5M 连接(需调优内核参数)
4. 延迟分解公式
总延迟 = 网络传输 + 队列等待 + 处理时间 + 序列化
示例:3秒延迟分配
→ 500ms(网络) + 300ms(队列) + 1.5s(业务) + 700ms(DB)
资源监控与调优
1. 监控指标看板
指标 | 正常范围 | 报警阈值 |
---|---|---|
CPU使用率 | <70% | >85%持续5分钟 |
内存使用率 | <80% | >90% |
磁盘I/O等待 | <10% | >30% |
TCP连接数 | <max_connections*0.7 | >max_connections*0.9 |
2. 调优策略矩阵
问题现象 | 可能原因 | 解决方案 |
---|---|---|
QPS低延迟高 | 数据库慢查询 | 添加索引/优化SQL |
QPS波动大 | 缓存失效 | 优化缓存策略/增加缓存层 |
带宽突增 | DDoS攻击 | 启用WAF/弹性带宽 |
TCP连接数达到上限 | 长连接未释放 | 连接池优化/超时设置 |
3.最佳实践:
- 建立性能基线(基准测试)
- 实施监控告警体系
- 定期压力测试(至少每季度)
- 容量规划预留20%余量