这里详细介绍性能测试过程中需要关注的性能指标,以及性能指标的范围。
1.业务性能指标
指标名 | 指标说明 | 采集方法 |
并发用户数 | 在同一时刻与服务器进行了交互的在线用户数量 | Jmeter/loadrunner |
响应时间 | 客户发出请求到得到响应的整个过程的时间。一般他可以分为三部分:呈现时间,数据传输时间和系统处理时间 | Jmeter/loadrunner |
吞吐量 | 一次性能测试过程中网络上传输的数据量的总和 | Jmeter/loadrunner |
每秒处理事务数(TPS) | 每秒钟系统能够处理事务或交易的数量,它是衡量系统处理能力的重要指标。 | Jmeter/loadrunner |
点击率 | 点击率可以看做是TPS的一种特定情况。每秒钟用户向web服务器提交的HTTP请求数。 | Jmeter/loadrunner |
事务成功率 | 本次测试中出现成功的事务数量/事务的总数 | Jmeter/loadrunner |
2.应用服务器及硬件性能指标
指标名 | 指标说明 | 采集方法 |
CPU占用率 | 对一个时间段内CPU使用状况的统计。 建议:<75% | nmon/vmstat/top |
Load Average | 一段时间内CPU正在处理以及等待CPU处理的进程数之和的统计信息,也就是CPU使用队列的长度的统计信息。 建议:<0.7*CPU个数*核数 | top/uptime |
Paging rate | 内存页交换率,建议<80% | nmon/vmstat/top |
磁盘I/O | Iowait<30% | nmon/iostat/sar |
SWAP | 有没有交换页面 | nmon |
Tomcat启动的总线程数 | 关注线程数会不会无限制增长、线程数量是否足够 | Top |
Full GC次数 | 关注Full GC次数,以及Full GC后内存占用有没有明显增长 | Jstat/jconsole |
JVM内存使用与回收 |
| Jstat/jconsole |
JDBC监控 |
| Jprofiler |
Exception日志监控 | 监控压力过程中是否有异常日志产生 | Tail&grep |
3.数据库性能指标
指标名 | 指标说明 | 采集方法 |
DB cpu占用率 | 数据库cpu利用率,建议<70% | nmon |
DB load | 数据库服务器负载 | Top |
DB mem | 内存使用是否平稳 | Nmon |
DB 磁盘与I/O | I/O是数据库性能一个非常重要的因素,建议IOwait<30% | Nmon/iostat/sar |
数据库线程数 |
| Top |
缓存命中率 | 点击率可以看做是TPS的一种特定情况。每秒钟用户向web服务器提交的HTTP请求数。 | AWR |
共享池命中率 | 假如这个值低于95%就要考虑调整应用(改写多为变量绑定)或者增加内存 | AWR |
Top 耗时 sql | 找出性能较差的sql,进行优化 | AWR |
4.性能指标值参考
在确定性能指标的时候,可以参考一下表中对应的数值。
指标项 | 优秀 | 中等 | 差 |
TPS | TPS >=100 | 50<TPS <100 | TPS<=50 |
响应时间 | RT<=200ms | 200ms<RT<500ms | RT>=500ms |
响应长度 | ResponseSize<=100KB | 100KB<ResponseSize<500KB | ResponseSize>=500KB |
CPU | CPU<=75% | 75%<CPU<80% | CPU>=80% |
Load | Load<=2 | 2<Load<5 | Load>=5 |
FullGC | FullGC<=1 | 1<FullGC<10 | FullGC>=10 |
DBQPS | DBQPS<5*TPS | 5*TPS<DBQPS<10*TPS | DBQPS>=10*TPS |
慢SQL数量 | 慢SQL=0 | 慢SQL=1 | 慢SQL>=2 |