性能测试“后端深度监控” 是定位瓶颈、分析问题根源的关键。LoadRunner Controller 本身可以通过各种监控代理(如 Windows PerfMon、UNIX/Linux 的 rstatd 等)来收集这些指标。

以下指标按数据库服务器资源层级进行分类,并附有详细的解读和诊断意义。

一、CPU相关指标

CPU是数据库处理计算的主要硬件,使用情况直接反映了系统的繁忙程度。

% Processor Time(处理器时间百分比),CPU用于执行非空闲线程的时间百分比。这是最主要的CPU监控指标。

详解:

健康范围:持续低于 70%-80%。

警告:持续高于 85%,表明CPU是潜在瓶颈。

诊断:如果该值持续很高,同时User Time很高,说明数据库自身的SQL计算和数据处理消耗了大量CPU;如果Privileged Time很高,可能意味着内核态操作频繁,如 I/O 请求过多、上下文切换频繁。

% User Time(用户模式时间百分比),CPU在用户模式下执行应用程序(如数据库进程)代码的时间百分比。

诊断:高值通常意味着数据库正在繁忙地进行排序、哈希连接、数据过滤等 SQL 操作。

%Privileged Time(特权模式时间百分比),CPU 在内核模式下执行操作系统服务(如系统调用、I/O 管理)的时间百分比。

诊断:异常高时,需结合磁盘和网络指标,可能表明存在大量的磁盘 I/O 或网络 I/O。

Processor Queue Length(处理器队列长度),在处理器队列中等待执行的线程数。

详解:

健康范围:每颗 CPU 主要的队列长度持续低于 2。

警告:如果持续大于 (2 * CPU 主要数),则明确表示 CPU 是系统瓶颈。线程在等待 CPU 时间片,会导致响应时间急剧增加。

二、内存相关指标

数据库严重依赖内存来缓存数据和执行计划,以减少昂贵的磁盘 I/O。

Available Mbytes(可用内存兆字节数),物理内存中可供程序立即使用的内存量。

详解:

健康范围:至少要有 10% 的物理内存可用。如果服务器有大量内存,绝对值不应低于 1-2 GB。

警告:持续很低,表明物理内存可能不足,系统可能开始使用交换分区。

Pages/sec(页/秒),为解决硬页错误而从磁盘读取或写入磁盘的页数。

详解:

健康范围:持续低于 20。

警告:持续高于 50 或 100,表明内存压力巨大,发生了大量的硬页错误,服务器正在频繁地进行磁盘交换。这是内存瓶颈的明确信号,会严重拖慢系统。

Buffer Cache Hit Ratio(缓冲区缓存命中率) - 数据库特定,从数据库缓冲区缓存中获取的数据页的百分比,而不需要从磁盘读取。这是衡量数据库内存效率的黄金指标。

详解:

Oracle: Buffer Hit Ratio,理想值应 > 90%。

SQL Server: Buffer cache hit ratio,理想值应 > 95%。

MySQL InnoDB: 通过 Innodb_buffer_pool_reads / Innodb_buffer_pool_read_requests 计算,命中率应接近 100%。

诊断:低命中率意味着数据库需要频繁从磁盘读取数据,通常是由于缓冲区大小不足或存在全表扫描等低效查询。

三、磁盘 I/O 相关指标

磁盘是数据库最后持久化数据的地方,I/O 性能是数据库的“生命线”。

% Disk Time(磁盘时间百分比),磁盘忙于处理读/写请求的时间百分比。

详解:由于该指标在 RAID 环境下可能超过 100%,通常更关注趋势。持续高值(如 > 80%)表明磁盘子系统繁忙。

Avg. Disk sec/Read & Avg. Disk sec/Write(平均磁盘读/写耗时),一次磁盘读/写操作所需的平均时间(以秒为单位)。这是衡量磁盘性能最直接的指标。

详解(根据微软的建议):

优秀:< 10 ms (0.01s)

良好:10 - 20 ms (0.01s - 0.02s)

一般:20 - 50 ms (0.02s - 0.05s)

差/可能存在瓶颈:> 50 ms (0.05s)

Disk Reads/sec & Disk Writes/sec(磁盘读/写速率)。每秒物理磁盘的读/写操作次数。

诊断意义:需要结合 Avg. Disk sec/Transfer 来看。高 IOPS 但延迟低,说明磁盘性能好。高 IOPS 伴随高延迟,则磁盘可能是瓶颈。

Avg. Disk Queue Length(平均磁盘队列长度),在监控时间间隔内,排队等待磁盘的请求平均数。

详解:

健康范围:持续低于 (2 * 磁盘主轴数)。对于单块磁盘,应持续低于 2。

警告:高队列长度意味着磁盘无法跟上请求速度,是 I/O 瓶颈的明确迹象。

四、网络相关指标

对于分布式数据库或应用和数据库分离的架构网络非常重要。

Bytes Total/sec(每秒总字节数),网络适配器发送和接收字节的总速率。

诊断意义:检查该值是否接近网络接口的带宽上限(如 1 Gbps ≈ 125 MB/s)。持续接近上限表明网络带宽可能成为瓶颈。

Network Interface: Output Queue Length(网络输出队列长度),在网络适配器输出队列中等待的数据包数量。

诊断意义:该值应持续为 0 或接近 0。持续大于 2 表明网络可能存在拥塞或瓶颈。

五、数据库特定主要指标

这些指标直接反映数据库内部的工作状态,是定位SQL和配置问题的关键。

锁和阻塞

Lock Timeouts/sec / Lock Waits/sec:每秒发生的锁超时或锁等待数量。高值表示存在严重的资源争用。

Average Wait Time (ms):平均每个锁等待的耗时。高值(如 > 100ms)对用户体验影响很大。

Deadlocks/sec:每秒发生的死锁数。任何非零值都需要引起高度重视,表明应用程序逻辑可能有问题。

用户连接数

User Connections:当前连接到数据库的用户数。监控和最大连接数的关系,防止连接数耗尽。

SQL相关(通过数据库动态性能视图获取)

高消耗SQL:监控 CPU Time、Elapsed Time、Disk Reads、Logical Reads 排名靠前的SQL语句。这些是性能调优的首要目的。

批量重编译/秒:高值表明执行计划缓存存在问题,可能导致 CPU 使用率升高。

监控实践和关联分析建议

诊断:永远不要孤立地看待一个指标。如,高 %Disk Time和低Buffer Cache Hit Ratio同时出现,强烈指向内存不足导致物理 I/O 过高。

设置基线:在系统性能良好时收集一套指标作为基线,这样在性能测试时才能有对比的依据。

监控细节:在负载测试的“加压”、“满载”和“恢复”阶段,密切关注这些指标的变化趋势。

工具使用:在LoadRunner中正确配置监控计数器,并善用图表叠加功能,将响应时间和后端资源指标(如CPU、磁盘队列)在时间轴上对齐,可以直观地发现因果关系。

文章来源:卓码软件测评

精彩推荐:点击蓝字即可
软件负载测试 API自动化测试 软件测试 第三方软件测试 软件性能测试 软件测试机构

Logo

有“AI”的1024 = 2048,欢迎大家加入2048 AI社区

更多推荐