采用编写VuGen脚本访问Tomcat的Status页面的方式获取性能数据(利用了关联和lr_user_data_point函数),本质上还是使用tomcat自带的监控页面,只是将监控结果加到LR的analysis中。具体步骤如下:

1)首先确保Tomcat中创建了必要权限的用户(编辑Tomcat的\conf目录下的tomcat-users.xml文件),然后在LoadRunner中编写脚本(根据不同版本的tomcat监控结果中的监控数据项会有些差别,根据情况更改脚本):

double atof (const char *string);
extern char* strtok(char *token, const char *delimiter); CollectMetrics()
{
int countP, countS, countF, countR, countK;
int numValues;
static int loggedVersionInfo = FALSE; lr_save_string("127.0.0.1:8080", "ServerName");
web_set_max_html_param_len(""); web_set_user("admin",
"admin",
"{ServerName}"); lr_start_transaction("monitor tomcat"); web_reg_save_param("JVMFreeMemory",
"LB=Free memory: ",
"RB= MB",
"Ord=1",
LAST); web_reg_save_param("JVMTotalMemory",
"LB=Total memory: ",
"RB= MB",
"Ord=1",
LAST); web_reg_save_param("JVMMaxMemory",
"LB=Max memory: ",
"RB= MB",
"Ord=1",
LAST); web_reg_save_param("HTTPMaxThreads",
"LB=Max threads: ",
"RB= ",
"Ord=1",
LAST); web_reg_save_param("HTTPMinSpareThreads",
"LB=Min spare threads: ",
"RB= ",
"Ord=1",
LAST); web_reg_save_param("HTTPMaxSpareThreads",
"LB=Max spare threads: ",
"RB= ",
"Ord=1",
LAST); web_reg_save_param("HTTPCurrentSpareThreads",
"LB=Current thread count: ",
"RB= ",
"Ord=1",
LAST); web_reg_save_param("HTTPCurrentThreadBusy",
"LB=Current thread busy: ",
"RB= ",
"Ord=1",
LAST); web_reg_save_param("HTTPMaxProcessingTime",
"LB=Max processing time: ",
"RB= ",
"Ord=1",
LAST); web_reg_save_param("HTTPRequestCount",
"LB=Request count: ",
"RB= ",
"Ord=1",
LAST); web_reg_save_param("HTTPErrorCount",
"LB=Error count: ",
"RB= ",
"Ord=1",
LAST); web_reg_save_param("HTTPBytesReceived",
"LB=Bytes received: ",
"RB= ",
"Ord=1",
LAST); web_reg_save_param("HTTPBytesSent",
"LB=Bytes sent: ",
"RB= ",
"Ord=1",
LAST); web_reg_save_param("JKMaxThreads",
"LB=Max threads: ",
"RB= ",
"Ord=2",
LAST); web_reg_save_param("JKMinSpareThreads",
"LB=Min spare threads: ",
"RB= ",
"Ord=2",
LAST); web_reg_save_param("JKMaxSpareThreads",
"LB=Max spare threads: ",
"RB= ",
"Ord=2",
LAST); web_reg_save_param("JKCurrentSpareThreads",
"LB=Current thread count: ",
"RB= ",
"Ord=2",
LAST); web_reg_save_param("JKCurrentThreadBusy",
"LB=Current thread busy: ",
"RB= ",
"Ord=2",
LAST); web_reg_save_param("JKMaxProcessingTime",
"LB=Max processing time: ",
"RB= ",
"Ord=2",
LAST); web_reg_save_param("JKRequestCount",
"LB=Request count: ",
"RB= ",
"Ord=2",
LAST); web_reg_save_param("JKErrorCount",
"LB=Error count: ",
"RB= ",
"Ord=2",
LAST); web_reg_save_param("JKBytesReceived",
"LB=Bytes received: ",
"RB= ",
"Ord=2",
LAST); web_reg_save_param("JKBytesSent",
"LB=Bytes sent: ",
"RB= ",
"Ord=2",
LAST); web_reg_find("Text=/manager",
LAST); web_url("status",
"URL=http://{ServerName}/manager/status",
"Resource=0",
"RecContentType=text/html",
"Referer=",
"Snapshot=t1.inf",
"Mode=HTTP",
LAST); lr_end_transaction("monitor tomcat", LR_AUTO); // 写入Tomcat JVM 度量数据
lr_user_data_point("Tomcat JVM Free memory", atof(lr_eval_string("{JVMFreeMemory}")));
lr_user_data_point("Tomcat JVM Total memory", atof(lr_eval_string("{JVMTotalMemory}")));
lr_user_data_point("Tomcat JVM Max memory", atof(lr_eval_string("{JVMMaxMemory}"))); // 写入Tomcat web server 度量数据
lr_user_data_point("Tomcat HTTP Max threads", atof(lr_eval_string("{HTTPMaxThreads}")));
lr_user_data_point("Tomcat HTTP Min spare threads", atof(lr_eval_string("{HTTPMinSpareThreads}")));
lr_user_data_point("Tomcat HTTP Max spare threads", atof(lr_eval_string("{HTTPMaxSpareThreads}")));
lr_user_data_point("Tomcat HTTP Current spare threads", atof(lr_eval_string("{HTTPCurrentSpareThreads}")));
lr_user_data_point("Tomcat HTTP Current thread busy", atof(lr_eval_string("{HTTPCurrentThreadBusy}")));
lr_user_data_point("Tomcat HTTP Max processing time", atof(lr_eval_string("{HTTPMaxProcessingTime}")));
lr_user_data_point("Tomcat HTTP Request count", atof(lr_eval_string("{HTTPRequestCount}")));
lr_user_data_point("Tomcat HTTP Error count", atof(lr_eval_string("{HTTPErrorCount}")));
lr_user_data_point("Tomcat HTTP Bytes received", atof(lr_eval_string("{HTTPBytesReceived}")));
lr_user_data_point("Tomcat HTTP Bytes sent", atof(lr_eval_string("{HTTPBytesSent}"))); // 写入Tomcat servlet container 度量数据
lr_user_data_point("Tomcat JK Max threads", atof(lr_eval_string("{JKMaxThreads}")));
lr_user_data_point("Tomcat JK Min spare threads", atof(lr_eval_string("{JKMinSpareThreads}")));
lr_user_data_point("Tomcat JK Max spare threads", atof(lr_eval_string("{JKMaxSpareThreads}")));
lr_user_data_point("Tomcat JK Current spare threads", atof(lr_eval_string("{JKCurrentSpareThreads}")));
lr_user_data_point("Tomcat JK Current thread busy", atof(lr_eval_string("{JKCurrentThreadBusy}")));
lr_user_data_point("Tomcat JK Max processing time", atof(lr_eval_string("{JKMaxProcessingTime}")));
lr_user_data_point("Tomcat JK Request count", atof(lr_eval_string("{JKRequestCount}")));
lr_user_data_point("Tomcat JK Error count", atof(lr_eval_string("{JKErrorCount}")));
lr_user_data_point("Tomcat JK Bytes received", atof(lr_eval_string("{JKBytesReceived}")));
lr_user_data_point("Tomcat JK Bytes sent", atof(lr_eval_string("{JKBytesSent}"))); return ;
}

2)然后在Run-time中设定数据收集的间隔:

3)最后在Controller中设置脚本运行,这样场景运行完毕后,即可在Analysis中添加“User Defined Data Points”查看收集到的Tomcat性能数据:

 这种收集数据的弊端是需要通过网络请求Tomcat的页面,会对Tomcat服务器的性能造成一定的影响如果Tomcat出现性能瓶颈,则收集数据时也可能碰到连接错误,因此,最好把收集数据点的间隔设大一点,例如5秒~10秒收集一个数据点。或尽量不采用LR监控。

LR监控tomcat服务器的更多相关文章

  1. 如何监控Tomcat服务器

    如何监控Tomcat服务器 发表于:2009-06-25来源:作者:点击数:2651 标签:tomcatTomcat服务器 在进行 性能测试 时,一般都需要对应用服务器进行监控,监控的指标包括应用服务 ...

  2. 通过LR监控Linux服务器性能

    1)设置监控服务器要监控 UNIX 资源,必须配置 rstatd 守护程序.注意,可能已经配置了 rstatd守护程序,因为当计算机收到一个 rstatd 请求时,该计算机上的 inetd 自动激活r ...

  3. LR监控apache服务器

    开启mod_status模块功能,在LR的controller中找到apache资源图双击并右键添加度量,如下图:      添加apache服务器IP地址.选择系统平台.添加需要监控的计数器即可进行 ...

  4. 服务器上监控tomcat,如果挂掉则重启

    该脚本用于监控tomcat服务器是否可用,如果服务不可用则重启tomcat 略微修改后也可以用于其他服务的监控 monitor.sh 脚本如下 #!/bin/sh # 定义要监控的页面地址 WebUr ...

  5. 运用JMX监控Tomcat/Java jvisualvm简要说明

    公司线上项目出现了java heap space 然后经过查询知晓了下面工具于是开始了尝试. visualvm能干什么:监控内存泄露,跟踪垃圾回收,执行时内存.cpu分析,线程分析... jvisua ...

  6. LR监控Windows Server 2008 R2系统资源提示“指定的网络名不可用。”

    问题现象: LR监控远程服务器Window Server 2008 R2 系统资源,提示“Monitor name :Windows Resources. Cannot connect to mach ...

  7. LR如何监控tomcat性能

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

  8. JaCoCo在Tomcat服务器上监控代码覆盖率的使用方法

    简介 Jacoco是一个开源的覆盖率工具.Jacoco可以嵌入到Ant .Maven中,并提供了EclEmma Eclipse插件,也可以使用JavaAgent技术监控Java程序.很多第三方的工具提 ...

  9. Windows负载机JVM 远程监控Linux服务器下tomcat

    基本是跟着网上的操作进行的,除了遇到一个Local host name unknown的问题: 一.Linux服务器操作部分 服务器地址:10.64.111.68 首先配置JMX: 1.找到jdk目录 ...

随机推荐

  1. go学习之文件读取问题(需更新)

    go学习之文件读取问题(需更新) 一,问题: 今天做一个GO广度迷宫问题时,出现了一个奇怪的问题. 就是通过fmt.Fscanf()读取文件时,每行末尾多出一个0. 二,问题代码: 1,输入文件maz ...

  2. 浅谈style.height、clientHeight、offsetHeight、scrollHeight

    先分别介绍以下,以下资料来自MDN HTMLElement.offsetHeight 是一个只读属性,它返回该元素的像素高度,高度包含该元素的垂直内边距和边框,且是一个整数. Element.clie ...

  3. WPF几个基础概念的浅显理解

    1.逻辑树与视觉树 逻辑树在结构上与xaml文件对应 视觉树更细化,拆分到控件的每个组成部分 2.依赖属性与附加属性 依赖属性:就是自己自己没有属性值,而是通过Binding从数据源获得值,就是依赖在 ...

  4. 20155233 《Java程序设计》实验五 Java网络编程及安全

    实验内容 1.掌握Socket程序的编写: 2.掌握密码技术的使用: 3.设计安全传输系统. 实验1 两人一组结对编程: 0. 参考http://www.cnblogs.com/rocedu/p/67 ...

  5. PostgreSQL的pg_stats学习

    磨砺技术珠矶,践行数据之道,追求卓越价值 回到上一级页面: PostgreSQL统计信息索引页     回到顶级页面:PostgreSQL索引页 对于pg_stas,说明文档在这里: http://w ...

  6. OpenCV参考手册之Mat类详解

    OpenCV参考手册之Mat类详解(一) OpenCV参考手册之Mat类详解(二) OpenCV参考手册之Mat类详解(三)

  7. Zabbix学习之路(七)之Nginx的状态监控

    1.安装nginx [root@linux-node2 ~]# yum install -y nginx [root@linux-node2 ~]# mkdir /etc/zabbix/zabbix_ ...

  8. 【xml_Class、xmlElementNode_Class 类】使用说明

    xml_Class.xmlElementNode_Class这两个类是针对XML相关操作的类. 1.xml_Class类是针对XML文档操作的类 目录: 类型 原型 参数 返回 说明 Sub Sub ...

  9. HDU 6438

    Problem Description The Power Cube is used as a stash of Exotic Power. There are n cities numbered 1 ...

  10. Python的sys.argv使用说明

    刚开始使用这个参数的时候,很不明白其含义.网上搜索很多都是贴的官网上面的一则实例,说看懂,就明白.可是,我看不懂.现在在回头看这个参数使用,并不是很麻烦. 举几个小例子就明白了. 创建一个脚本,内容如 ...