【压测】压测常见指标计算
参考:http://www.blogjava.net/cenwenchu/archive/2008/06/30/211712.html
参考:https://blog.csdn.net/u011183653/article/details/19489603
分类 | 指标 | 判定标准 | 备注 |
机器 | cpu 利用率(用户空间,系统空间) | ||
cpu load | |||
cpu io 等待 | |||
java服务 | yongGC次数和时长 | ||
fullGc次数和时长 | |||
年轻代空间使用变化 | |||
老年代空间使用变化 | |||
数据库是否有慢查询 | |||
其他存储或接口是否有超时或慢响应 | |||
服务的线程数 | |||
服务是Tp*响应指标 |
一、CPU的利用率
- cpu利用率=线程使用CPU计算的时间/统计的时间段
- 进程占用CPU的时间=线程使用CPU计算的时间+I/O读写时间
- cpu的利用率要控制在60%~70%
- 能够反映的是cpu被使用的情况,当cpu长期处于被使用而没有的到足够的时间休息间歇,那么对于机器硬件来说是一种超负荷的运作,需要调整使用频度。
二、CPU的Load Average
- 表示的是CPU的平均负载。我们知道进程有三种基本态:挂起、就绪、进行(此外还有创建和结束)。
- 操作系统会给“一个CPU分配一个对应的task队列”。显然:“数值为1表示刚刚好可以处理,如果大于1则表示task队列里面已经有进程在堆积了。也就是负载过重,机器处理不过来了”。
- 体现的是在某一统计时间段内,所有使用cpu的线程加上等待cpu分配的线程一个平均统计数。
- Cpu的Average Load从另一个角度来展现对于cpu使用状态的描述,Average Load越高说明对于cpu资源的竞争越激烈,cpu资源比较短缺。对于资源的申请和维护其实也是需要很大的成本,所以在这种高Average Load的情况下cpu资源的长期“热竞争”也是对于硬件的一种损害。
- 理想状况下,单核cpu的load控制法则:在0.7是非常平顺的。如果是1则需要在问题变糟糕前确认原因,并优化。如果是5则紧急高优。 8核cpu则在5.6可以接受。
- 对于1分钟,5分钟,15分钟的cpu load更关注那些指标:着眼于5分钟和15分钟。
关于低Cpu利用率,高Load的情况的分析
- 低利用率的情况下是否会有高Load Average的情况产生呢?理解占有时间和使用时间就可以知道,当分配时间片以后,是否使用完全取决于使用者,因此完全可能出现低利用率高Load Average的情况。由此来看,仅仅从CPU的使用率来判断CPU是否处于一种超负荷的工作状态还是不够的,必须结合Load Average来全局的看CPU的使用情况和申请情况。
- 对于CPU利用率和CPU Load Average的结果来判断性能问题。首先低CPU利用率不表明CPU不是瓶颈,竞争CPU的队列长期保持较长也是CPU超负荷的一种表现。对于应用来说可能会去花时间在I/O,Socket等方面,那么可以考虑是否是这些硬件的速度影响了整体的效率。