使用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. YY 神曲 李明霖 14部合集

    http://pan.baidu.com/s/1i5JIvXV

  2. 项目管理工具~SVN

    SVN 定期更新:每周五,周一早上 目录完备: 需求文档     设计文档     数据字典     测试报告     代码备份     周报月报                           ...

  3. BestCoder22 1003.NPY and shot 解题报告

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5144 题目意思:有个人抛物体,已知抛的速度和高度,问可以抛到的最远距离是多少.即水平距离. 做的时候是 ...

  4. windows编程中关于“关闭窗口无法退出进程”的解决方法

    一般会出现如下两种情况 1.WinMain函数中,最后阶段接收消息队列循环中,调用的GetMessage函数参数提供错误 如: while (GetMessage(&msg,hwnd, 0, ...

  5. MySQL 获得当前日期时间\时间戳 函数 ( 转自传智播客)

    MySQL 获得当前日期时间 函数 1.1 获得当前日期+时间(date + time)函数:now() mysql> select now(); +-------+ | now() | +-- ...

  6. Jquery 提示还可以输入的字数,将多余的字数截取掉

    js代码: $(function () { var counter = $("#divform textarea").val().length; //获取文本域的字符串长度 $( ...

  7. linker command failed with exit code 1 (use -v to see invocation)

    library not found for -|AFNetworking 错误内容如图所示: 解决方法:1. 如果没有安装pod,则安装pod,并导入项目AFNetworking参考:http://w ...

  8. 写了个简单的pdo的封装类

    <?php class PD { //造对象 public $dsn = "mysql:dbname=test2;host=localhost"; //数据库类型,数据库名和 ...

  9. 理解Java中的final和static关键字

    回顾这两个关键字前,先考虑一个问题: Static变量存储在JVM中的位置,或者说static变量是如何被加载的? JVM会把类的静态方法和静态变量在类加载的过程中读入方法区(Method Area) ...

  10. 名词解释——Ext JS4

    Ext.onReady——Ext主入口,和onload事件不同,不需要页面所有东西加在出来. Ext js 的基本语法就是使用树状图来配置对象来定义界面: { config_options1:valu ...