测试常用指标及工具

it2022-05-09  60

测试,是一个挺专业的事情。

1. 系统性能定义

性能测试指标

Throughput:吞吐量,系统每秒钟可以处理的请求数,任务数。Latency:系统延迟,系统在处理一个请求或一个任务时的延迟。TPS:每秒响应的任务数量。

考察系统性能时需要同时考虑上面的性能指标。比如最多允许 2 秒以内的延迟时,系统最多可以承受多大并发。在描述系统性能时,响应时间参数必须和吞吐量挂钩,单纯的响应时间意义不大。

这两个性能指标之间互相有影响:

Throughput 增大会导致 Latency 增大,请求越多系统负载越高,延迟越大。Latency 越小则系统的 Throughput 就越高,Latency 小则说明处理请求的速度快,可以处理更多的请求。

某些测试可能还会有平均值和成功率这两个性能指标。

性能测试方法

负载测试压力测试配置测试并发测试可靠性测试

2. 系统性能测试

测试之前必须首先要明确需求。对于不同系统,要求的 Throughput 和 Latency 会有所不同。完整的测试流程如下:

明确 Latency:不同业务可以有不同的响应时间,例如可以设定为 2 秒。制定测试方法:选择一个向系统施加指定的 Throughput 的压力测试工具(参考下面),选择一个测量 Latency 的工具(例如 Fiddler、Wireshark)。开始性能测试并汇总数据:不断提升 Throughput,看看系统负载情况,判断系统是否正常。如果系统在指定 Throughput 下未宕机,则记录 Latency。Throughput 增大到一定大小后,Latency 会开始抖动,通常会把 95% 的请求在指定的 Latency 内得到响应时对应的 Throughput 作为一个重要阈值。分析结果:将结果汇总成图标。

常用的压力测试工具有: - JMeter(Java 桌面应用,开源稳定且生态完善,并发差) - wrk(简单的 http 性能测试工具) - Loadrunner(收费,目前属于 microfocus) - webbench(只支持 Linux,最多可以模拟3万个并发连接) - http_load(程序小巧,资源占用少) - ab(Apache 集成,简单功能少) - tcpcopy(开源,生态活跃) - 压测大师(将测试打包成服务,在云端直接使用)。

性能测试时,每个 Throughput 的压力需要持续一段时间,尤其是在阈值附件的 Throughput,可能需要几个小时甚至几天的压测。

3. 查找系统瓶颈

3.1 查看操作系统负载

看操作系统负载,就是看操作系统的 CPU 利用率、内存使用率、磁盘 IO、网络 IO。Linux 下常用的命令和工具有:SystemTap(查看内核信息,参考 这里),iostat, top, tcpdump 等。

关于 CPU,多核 CPU 中的 CPU0 在执行普通任务的同时还负责核间调度,因此要确保其负责不能过高。 关于 IO,IO 使用率高时 CPU 使用率一般就比较低,程序一般会交替占用 CPU 或 IO。

3.2 使用 Profiler 测试

系统中 80% 的运行时间花在了 10% 的代码上,找出那些频繁调用的代码并优化可以事半功倍。

测试时,可以在代码中使用计时器和函数调用计算器做统计并定时写入日志,也可以分块注释进行测试以查找问题代码段。

Profiler 测试工具:

Perf:Linux kernel 自带的系统性能优化工具,与 Linux Kernel 紧密结合。可以按进程、CPU 或 counter group 等不同类别来查看信息,对代码优化到 CPU 的微指令级别。xhprof:PHP 语言的轻量级分层性能测量分析器,轻量,可在生产环境部署。参考 这里。

4. 性能调优

参考 性能调优攻略。

转载于:https://www.cnblogs.com/kika/p/10851678.html


最新回复(0)