Jmeter中如何收集性能参数

jmeter并没有给我们提供收集参数方法,比如LR,通过WMI收集。不过我们可以自己通过统计log的方式解决。

在windows下,我们通过开启性能计数器解决:

计数器名称 作用
Memory \ Available MBytes
系统可用内存数(同时收集Available bytes供细粒度比对)
Memory \ Page Read / sec
内存页面读取速率(供联合比对,比如与disk queue_len一起比对判断是否内存不足)
Memory \ Page Fault / sec
内存页出错数量
PhysicalDisk \ Disk Time%
磁盘读写所用时间百分比
PhysicalDisk \ Avg. Disk Queue Length
磁盘读写请求平均数
PhysicalDisk \ Current Disk Queue Length
具体到某一时间正在等待磁盘访问的系统请求数量
Process \ IO Read Bytes / sec
系统每秒IO读取速率
Process \ IO Wrtie Bytes / sec
系统每秒IO写入速率
Process \ Private Bytes / sec
无法共享的已分配字节数(与working set && available byte联用,判断内存泄漏)
Process \ Working Set
同上
Processor \ Privileged Time%
系统占用CPU的时间百分比
Processor \ Processor Time%
CPU总利用百分比
Processor \ User Time%
用户占用CPU时间百分比,这里指应用程序
System \ Context Switches / sec
反应 CPU线程切换频率
System \ Processor Queue Length
系统等待运行线程数(比如与cpuTime等一起联用,判断阻塞等)

我们把windows里配置好这些,日志类型为文本并逗号分割;测试完了以后截取日志就可以了。

linux下性能收集:

在linux下,我们可以自己写个sh去收集并运行,或者直接扔给crontab:

#!/bin/sh

case


 "$1"


 in
  start)
    echo "start collect:"



    free -k -s1 >> free_mem.log &
    vmstat 1 >> vmstat.log &
    ;;
  stop)
    kill `ps -ef | grep free | awk '{print $2}'`
    kill `ps -ef | grep vmstat | awk '{print $2}'`
    ;;
  *)
    echo "Usage: $0 {start|stop}"



    ;;
esac

exit 0

然后我们google下rb管理员,写个转换:

def convert_vmstat
  stat = File.stat('d:/vmstat.log')
  now  = stat.mtime
  t=Time.now
  lines=[]
  File.readlines('d:/vmstat.log').each do


 |line|
    line.chomp
    if


 line.match(/^\s+\d+/m) then
      now  = now + 1
      date = "#{now.day}/#{now.month}/#{now.year}"



      time = "#{now.hour}:#{now.min}:#{now.sec}"



      data = line.gsub(/^\s+/m,"").gsub(/[\s\t]+/m,"


,").gsub(/,$/m,"


")
      lines<<"#{date},#{time},#{data}"



    end
  end
  lines.each do


 |row|
    File.open("d:/vmstat.csv"


,"w"


) do


 |the_file|
      the_file.puts "date,time,r,b,swpd,free,buff,cache,si,so,bi,bo,in,cs,us,sy,id,wa,st"


    
      the_file.puts lines                      
    end
  end
end

convert_vmstat
puts 'ok'
2 聚合与统计

聚合与统计,我们可以手工用xls来做

统计内存使用百分比(windows):(3750 - b2) / 3750 * 100

统计cpu使用率(linux):100 - free

我们借助xls,对csv文件进行简单聚合集合,就可以生成图表了。

分组统计:

比如我们对get请求 get/studio做了参数化(get/studio/1, get/studio/2),那么我们需要自己写函数去聚合:

total_time=SUMIF(A:A,"/studio/*",d:d)

items_count=COUNTIF(A:A,"/studio/*")

3 如何计算中值以及90% Line

计算中值和90% Line的步骤:

1)对所有数据按照升序进行排序

2)用0.5*Len(values)得到的行的值即为中值,如一共有60行,0.5*60=30,那么第30行的值即为中值

3)用0.9*Len(values)得到的行的值即为90% Line,如一共有60行,0.9*60=54,那么第54行的值即为90% Line

猜你喜欢

转载自shenmin1984.iteye.com/blog/1555665