使用LoadRunner做性能测试,一般的直觉是LR只能完成脚本录制和编写模拟用户的请求行为,但是在某些情况下,要监控一些中间件或web服务器的性能时,就不能通过录制脚本来完成了,那么就需要手工来编写脚本,通过LR自带的lr_user_data_point(“”,””)打点函数进行自定义的监控其性能指标。

这里以监控Tomcat web服务器为例。

实现思路:

1、  配置Tomcat登录用户,找到tomcat-6.0.37目录下的/conf/ tomcat-users.xml,添加配置如下:

<tomcat-users>

<role rolename="manager-gui"/>

<user username="monitor" password="123456" roles="manager-gui"/>

</tomcat-users>

(配置Tomcat登录用户后,建议测试一下配置的用户登录能否登录进入Tomcat管理页面)

2、  在Action脚本中,使用web_set_user("用户名","密码","tomcat服务器所在的IP地址:端口");

3、  脚本中编写web_url(); 模拟访问Tomcat的url 并登录

4、  利用关联函数web_reg_save_parm()动态地捕获想要的数据

5、  最后利用打点函数lr_user_data_point(“监控指标名”,”监控指标值”);记录用户自定义的数据样本

VuGen脚本代码如下:

Action_tomcat()

{

double atof(const char * string);

web_reg_save_param("JVM_FreeMemory",

"LB=Free memory: ",

"RB= MB",

"Ord=1",

LAST);

web_reg_save_param("JVM_TotalMemory",

"LB=Total memory: ",

"RB= MB",

"Ord=1",

LAST);

web_reg_save_param("JVM_MaxMemory",

"LB=Max memory: ",

"RB= MB",

"Ord=1",

LAST);

web_reg_save_param("HTTP_MaxThreads",

"LB=Max threads: ",

"RB= ",

"Ord=1",

LAST);

web_reg_save_param("HTTP_MaxProcessingTime",

"LB=Max processing time: ",

"RB= s",

"Ord=1",

LAST);

web_reg_save_param("HTTP_RequestCount",

"LB=Request count: ",

"RB= ",

"Ord=1",

LAST);

web_reg_save_param("HTTP_BytesReceived",

"LB=Bytes received: ",

"RB= MB",

"Ord=1",

LAST);

web_set_user("monitor","123456","localhost:8088");

lr_think_time(5);

web_url("status",

"URL=http://localhost:8088/manager/status",

"Resource=0",

"Referer=",

"Snapshot=t1.inf",

"Mode=HTML",

LAST);

lr_user_data_point("Tomcat_JVM_FreeMemory",atof(lr_eval_string("{JVM_FreeMemory}")));

lr_user_data_point("Tomcat_JVM_TotalMemory",atof(lr_eval_string("{JVM_TotalMemory}")));

lr_user_data_point("Tomcat_JVM_MaxMemory",atof(lr_eval_string("{JVM_MaxMemory}")));

lr_user_data_point("Tomcat_HTTP_MaxThreads",atof(lr_eval_string("{HTTP_MaxThreads}")));

lr_user_data_point("Tomcat_HTTP_MaxProcessingTime",atof(lr_eval_string("{HTTP_MaxProcessingTime}")));

lr_user_data_point("Tomcat_HTTP_ProcessingTime",atof(lr_eval_string("{HTTP_ProcessingTime}")));

lr_user_data_point("Tomcat_HTTP_RequestCount",atof(lr_eval_string("{HTTP_RequestCount}")));

lr_user_data_point("Tomcat_HTTP_BytesReceived",atof(lr_eval_string("{HTTP_BytesReceived}")));

return 0;

}

运行脚本,查看回放日志:

脚本编写好(注意:建议将监控Tomcat的这段脚本代码放在新插入一个Action里面,并且放在之前录制来的业务脚本后面),接下来,优化业务脚本,创建Controller等与平时的性能测试流程一样就好了。

在Controller监控场景图中,添加“运行时图-用户定义的数据点图”

最后在Analysis生成结果分析报告中,可以看到“运行时图-用户定义的数据点图”是显示有数据的,如图:

注意:这里的Tomcat_JVM_FreeMemory 和 Tomcat_HTTP_RequestCount的值会变大些,而Tomcat_HTTP_MaxThreads、Tomcat_JVM_MaxMemory、Tomcat_HTTP_MaxProcessingTime等这些值不会变化很大其原因基本上是tomcat自身的限制。

结论:可以看出,4~5min期间存在tomcat处理客户端请求瓶颈,后续需要观察其他图进行分析,可能是CPU瓶颈。

LoadRunner如何监控Tomcat性能的更多相关文章

  1. 如何监控tomcat性能

    如何监控tomcat性能:[1]工具一 | 浏览:155 | 更新:2014-12-13 10:06 1 2 3 4 5 6 分步阅读 tomcat经常被用作中间件,也有直接作WEB的,自带的工具不是 ...

  2. 如何监控tomcat性能:[1]工具一

    | 浏览:155 | 更新:2014-12-13 10:06 1 2 3 4 5 6 分步阅读 tomcat经常被用作中间件,也有直接作WEB的,自带的工具不是很给力,推荐以下的办法 工具/原料 ja ...

  3. Jmeter(四十九) - 从入门到精通高级篇 - jmeter使用监视器结果监控tomcat性能(详解教程)

    1.简介 上一篇宏哥讲解了利用jmeter的插件来监控服务器资源,这一篇讲解分享如何使用jmeter的监视器结果监控tomcat性能. 2.准备工作 文章标题中提到jmeter和tomcat,那么只需 ...

  4. LR如何监控tomcat性能

    使用LoadRunner做性能测试,一般的直觉是LR只能完成脚本录制和编写模拟用户的请求行为,但是在某些情况下,要监控一些中间件或web服务器的性能时,就不能通过录制脚本来完成了,那么就需要手工来编写 ...

  5. LoadRunner 实现监控Tomcat

    LoadRunenr没有监控Tomcat的专用监控器,为了用lr达到监控tomcat的目的可以通过打开Tomcat自带的Status页面之后,利用lr的关联技术得到相关的数据,把数据输出到lr自定义的 ...

  6. JMeter学习(十四)JMeter监控Tomcat性能

    使用jmeter的tomcat监视器功能,可以通过向tomcat的status页面发送get请求,得到资源使用信息,然后转换为只直观的图像方式,这样的话,就可以监视到服务器的资源使用情况,不过需要注意 ...

  7. 监控tomcat性能

    tomcat经常被用作中间件,也有直接作WEB的,自带的工具不是很给力,推荐以下的办法 工具/原料 javamelody 方法/步骤   下载 javamelody.jar和 jrobin-x.jar ...

  8. jvm系列(五):tomcat性能调优和性能监控(visualvm)

    tomcat服务器优化 1.JDK内存优化 根据服务器物理内容情况配置相关参数优化tomcat性能.当应用程序需要的内存超出堆的最大值时虚拟机就会提示内存溢出,并且导致应用服务崩溃.因此一般建议堆的最 ...

  9. Tomcat性能监控

    Tomcat性能监控工具很多,这里介绍两种1.JMeter 2.probe,使用这两种工具都需要在tomcat的安装目录/conf/tomcat-users.xml添加 <tomcat-user ...

随机推荐

  1. 从inet_pton()看大小端字节序

    #include<stdio.h> #include<netinet/in.h> #include<stdlib.h> #include<string.h&g ...

  2. 数据结构-链表逆置(c++模板类实现)

    链表结点类模板定义: template <class T> class SingleList; template <class T> class Node { private: ...

  3. 【leetcode】Minimum Path Sum(easy)

    Given a m x n grid filled with non-negative numbers, find a path from top left to bottom right which ...

  4. 【leetcode】Next Permutation(middle)

    Implement next permutation, which rearranges numbers into the lexicographically next greater permuta ...

  5. LeetCode 171 Excel Sheet Column Number

    Problem: Given a column title as appear in an Excel sheet, return its corresponding column number. F ...

  6. 苹果的软件/系统盘 网站 http://www.panduoduo.net/u/bd-369186934/2

    http://www.panduoduo.net/u/bd-369186934/2

  7. 在springMVC的controller层获取view层的参数的方式

    方法一:request.getParameter("name") 方法二:注解@RequestParam @RequestMapping("testRequestPara ...

  8. 词频统计_输入到文件_update

    /* 输入文件见337.in.txt 输出文件见338.out.txt */ #include <iostream> #include <cctype> #include &l ...

  9. 已有a,b两个链表,每个链表中的结点包括学号,成绩。要求把两个链表合并。按学号升序排列.

    #include <stdio.h>#define SIZE sizeof(struct student)struct student{       long num;       flo ...

  10. 自己动手编译hadoop-2.5.2源码

    搭建环境:Centos x 6.5  64bit (后来:我才知道原来官网上发布的就是64位的,不过这个对我来说是个学习过程,对以后进行其他平台编译的时候有帮助!) 1.安装JDK 我这里用的是64位 ...